Javascript 滴答声间隔不';在Highchart和Highstock中不能正常工作。
我正在尝试使用Highstock/Highchart来显示一些数据。在我的数据中,每个记录之间的间隔是1毫秒,我想将每个刻度之间的长度设置为40毫秒,我尝试将tickInterval设置为40,但在图表上显示每个刻度之间的间隔为50。如果我将其设置为30,图表显示为25。很奇怪,我不知道现在该怎么办,请帮忙 链接:Javascript 滴答声间隔不';在Highchart和Highstock中不能正常工作。,javascript,highcharts,highstock,Javascript,Highcharts,Highstock,我正在尝试使用Highstock/Highchart来显示一些数据。在我的数据中,每个记录之间的间隔是1毫秒,我想将每个刻度之间的长度设置为40毫秒,我尝试将tickInterval设置为40,但在图表上显示每个刻度之间的间隔为50。如果我将其设置为30,图表显示为25。很奇怪,我不知道现在该怎么办,请帮忙 链接: 谢谢Highstock没有将您提供的确切值设置为tickInterval 默认情况下,它所做的是在单元之间循环,以找到最适合滴答声间隔的单元 [1,2,5,10,20,25,501
谢谢Highstock没有将您提供的确切值设置为
tickInterval
默认情况下,它所做的是在单元之间循环,以找到最适合滴答声间隔的单元
[1,2,5,10,20,25,50100200500]//允许毫秒的倍数
[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]//月
因此,可以通过搜索最近的最佳匹配来设置输入。我浏览了highstock源代码,找到了这段代码
function normalizeTimeTickInterval(tickInterval, unitsOption) {
var units = unitsOption || [[
MILLISECOND, // unit name
[1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
...
}
这是什么代码?
它说如果你的时间单位是毫秒,那么将滴答声间隔(在你的例子中是40)标准化为其中一个的倍数,因此它将标准化为40到50和30到25。我不知道这是否可以从选项中覆盖。但是,如果您可以接受并且不违反任何版权法,您可以选择更改代码
编辑:找到了一种在不更改源代码的情况下使其正常工作的方法
检查小提琴@
这就是我所做的。对源代码进行一点调试/分析,提示highchart首先尝试在axis的options的units属性中查找units,如果找不到,则使用默认值。所以我继续调整units属性,将其设置如下。您需要在调用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
]];
找到问题的解决方法,在更新的答案中找到