我写了一个新的" pointFormatter"函数显示2点之间的差距,例如jsfiddle,但是当我将鼠标移动到第一点" 7.Jan"时,工具提示没有正确显示,我在控制台中看到错误日志" TypeError:this.series.data [preIndex]未定义"
但是,当我将timeRange更改为" all"时,移动鼠标到第一个点不再导致任何错误,并且当我将timeRange更改回&#34时; 1w",也没关系。
更重要的是,如果我通过删除最后一个点将点数从10更改为9,那么错误就不再发生了。
为什么呢?哪件事引起了这个错误?
$(function() {
var chart = new Highcharts.StockChart({
chart: {
renderTo: 'container'
},
rangeSelector: {
allButtonsEnabled: true,
buttons: [{type: 'week',count: 1,text: '1w'},
{type: 'all',text: 'all'}
],
selected: 0
},
series: [{
name: 'USD',
data: [
[0,null],
[86400000,null],
[86400000*2,null],
[86400000*3,null],
[86400000*4,null],
[86400000*5,null],
[86400000*6,3],
[86400000*7,4],
[86400000*8,6],
[86400000*9,8],
]
}],
plotOptions: {
line: {
step: 'left',
connectNulls: true,
tooltip: {
pointFormatter: function () {
var preIndex = this.index - 1;
while (preIndex >= 0 && this.series.data[preIndex].y == null) {
preIndex--;
}
if (preIndex < 0) {
return '<span style="color:' + this.series.color + '">\u25CF</span>' + this.series.name + ': <b>' + this.y + '</b><br/>';
} else {
var prePoint = this.series.data[preIndex];
var prePointY = prePoint.y;
var prePointX = prePoint.x;
var day = (this.x - prePointX) / 86400 / 1000;
var add = this.y - prePointY
add_str = '(' + add + ')';
return '<span style="color:' + this.series.color + '">\u25CF</span>' + this.series.name + ': <b>' + this.y + '</b> ' + add_str + '<br/>';
}
}
}
}
},
});
});
答案 0 :(得分:1)
Highstock具有数据分组功能 - 更多信息here。
此功能可以更改series.data数组。相反,您可以使用series.options.data(来自选项的原始数据)或禁用dataGrouping。
plotOptions: {
line: {
dataGrouping: {enabled: false},