我正在尝试使用Highstock / Highchart来显示一些数据。在我的数据中,每个记录之间的间隔是1毫秒,我想在每个刻度之间设置长度到40毫秒,我通过将tickInterval设置为40来尝试它,但是在图表上它在每个刻度之间显示50。如果我将它设置为30,则图表显示为25.非常奇怪,我现在不知道该怎么做,请帮忙。
链接: http://jsfiddle.net/xEcNS/1/
谢谢你
答案 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] //月
因此,输入将通过搜索最接近的最佳匹配来设置。