如果我缩放HighStock多系列图表(使用导航器或范围选择器),有没有办法只为缩放系列获取point.y数据?
例如,如果我显示跨多个分支的一段时间的销售信息(每个分支绘制为系列),并且如果缩放到一周,我想知道跨分支的一周的销售总额。 highstock是否提供对缩放数据集的访问?
一种非常强力的方法是在缩放时循环数据并评估它是否可见。也就是说,是x轴(和y轴)范围内的给定点,如果你允许放大那个方向的话?
chart: {
events: {
redraw: function() {
sum = 0;
xAxis = this.xAxis[0];
// Loop over your series
this.series[0].data.forEach(function(point) {
// Add to sum if within x-axis visible range
if(point.x >= xAxis.min && point.x <= xAxis.max) {
sum += point.y;
}
// If too large, stop summing
if(point.x > xAxis.max) {
return;
}
});
// Print sum
console.log('Visible sum: '+sum);
}
}
}
请参阅使用中的this JSFiddle demonstration。
您可以评估xAxis.events.setExtremes
,但它提供的min
和max
值可能会在生效后发生变化,这可能会产生一些意想不到的结果。
您可以在每个点检查isInside
标志:
redraw: function() {
var sum = 0;
Highcharts.each(this.series[0].points, function(point) {
if (point.isInside) {
sum += point.y;
}
});
console.log(sum)
}