tickInterval没有'在Highchart和Highstock中无法正常工作

tickInterval doesn't work properly in Highchart and Highstock.

本文关键字:常工作 工作 Highstock 没有 Highchart tickInterval      更新时间:2023-09-26

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

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

感谢

我浏览了高库存源代码,发现了这段代码

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/

以下是我所做的。对源代码的一点调试/分析表明,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
        ]];

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]//月

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