Highcharts.stockChart x轴数据用于不规则的带时间戳的散点图中断日期范围处理

时间:2018-01-23 17:49:21

标签: highcharts scatter-plot

改编自https://github.com/tevye/HighchartsXAxisSpecificationProblem中的README.md文件:

三个示例Highstocks HTML文件,一个工作,一个通过使数据时间戳不规则而损坏,最后一个显示失败的尝试修复在github存储库中。

背景

工作版本是艾默生为javascript控制台错误15(Sorting Scatter Highstock Chart with Multiple Series)输入的示例稍加修改的版本。忽略控制台错误,我们希望在具有不规则数据时间戳的散点图上使用Highstocks导航器。存储库中包含的工作版本具有大型2D阵列“点”。有规律的时间间隔。 xaxis声明有一个'数据'定义来自'点的映射值。

data: points.map(function(point) {
  return [point[2]];
}),

破损版本中唯一的变化是来自“点”的一组任意删除。数组强制时间戳足够不规则,以打破Highcharts提供的日期推断。 (如果你只删除工作副本中的几行,那么它仍然有效。删除一些它仍然可以工作......这很酷)。

在存储库的屏幕抓取“broken_badTickArray.html.png'”中,您可以看到日期是1969年12月31日到1970年1月1日,并且刻度数组数据是无法解读的。

尝试修复(仅上传版本'代表'多次尝试) 从破碎的版本开始,进行了多次尝试以克服错误的日期范围问题。屏幕抓取' works_goodTickArray.html.png'表明Highcharts将大量的时间戳归结为一小部分午夜日界限。在尝试修复版本中,以下代码生成一组显式的时间戳,然后将其作为x轴数据的值给出。

var xtd = [];
var apr222017 = 1492819200000;
var may162017 = 1494892800000;
var x = 0;
do {
    xtd[x] = apr222017 + (x * 86400000);
    x++
} while ((apr222017 + (x * 86400000)) < may162017);

如果这不起作用,则尝试设置“#floor”&#39;和&#39;天花板&#39; ...

// ...
data: xtd,
floor: apr222017,
ceiling: may162017,
// ...

没有运气,加上......

min: apr222017,
max: may162017,

没有帮助。也没有删除地板和天花板的定义,只能用最小/最大。

添加以下内容也失败了:

tickPositioner: function() {
    return xtd;
},

1 个答案:

答案 0 :(得分:2)

当数据点数小于1001时失败。

这里似乎发生的事情是“turbo”模式默认启动1000个条目,似乎在该模式下正确解释数据。

为“轴0”

将turboThreshold设置为1
{
xAxis: 0,
turboThreshold: 1,
//min:0,
//max: 100,
data: points.map(function(point) {
  return [point[0]];//, point[1]];
}),
showInNavigator: true,
enableMouseTracking: false,
color: '#FF0000',
showInLegend: false
}

],

StackOverflow Question

Referenced within the issues space for highcharts / albeit not an issue