tickInterval在Highchart和Highstock中无法正常工作。

时间:2012-08-06 10:36:19

标签: javascript highcharts highstock

我正在尝试使用Highstock / Highchart来显示一些数据。在我的数据中,每个记录之间的间隔是1毫秒,我想在每个刻度之间设置长度到40毫秒,我通过将tickInterval设置为40来尝试它,但是在图表上它在每个刻度之间显示50。如果我将它设置为30,则图表显示为25.非常奇怪,我现在不知道该怎么做,请帮忙。

链接:  http://jsfiddle.net/xEcNS/1/

谢谢你

2 个答案:

答案 0 :(得分:2)

我浏览了高原源代码并找到了这段代码

function normalizeTimeTickInterval(tickInterval, unitsOption) {
 var units = unitsOption || [[
 MILLISECOND, // unit name
 [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples 
 ...
}

这段代码是什么? 它说如果您的时间单位是毫秒,那么将tickInterval(在您的情况下为40)标准化为其中一个的倍数,因此它将40到50和30到25归一化。我不知道这是否可以从选项中被覆盖。如果您可以接受并且不违反任何版权法,您可以选择更改代码。

编辑:在不更改源代码的情况下找到了解决方法 检查小提琴@ http://jsfiddle.net/jugal/H83bs/

这就是我所做的。对源代码的一点调试/分析给出了提示,高图首先尝试在轴的选项的单位属性中找到单位的东西,如果找不到它,则使用默认值。所以我继续调整单位属性,将其设置如下。在调用highcharts构造函数之前,您需要执行此操作。

Highcharts.Axis.prototype.defaultOptions.units=[[
            'millisecond',
            [1, 2, 5, 10, 20, 25,30,40, 50, 100, 200, 500]
        ], [
            'second',
            [1, 2, 5, 10, 15, 30]
        ], [
            'minute',
            [1, 2, 5, 10, 15, 30]
        ], [
            'hour',
            [1, 2, 3, 4, 6, 8, 12]
        ], [
            'day',
            [1]
        ], [
            'week',
            [1]
        ], [
            'month',
            [1, 3, 6]
        ], [
            'year',
            null
        ]];

答案 1 :(得分:0)

Highstock不会将您提供的确切值设置为tickInterval

默认情况下,它通过单位循环查找最适合tickInterval的单位。

[1,2,5,10,20,25,50,100,200,500] //允许的倍数为毫秒

[1,2,5,10,15,30] //秒......

[1,2,5,10,15,30] //会议纪要

[1,2,3,4,6,8,12] //小时

[1,2] //日

[1,2] //周

[1,2,3,4,6] //月

因此,输入将通过搜索最接近的最佳匹配来设置。