HighCharts:访问缩放的系列数据

HighCharts:访问缩放的系列数据,highcharts,Highcharts,如果我缩放HighStock多系列图表(使用导航器或范围选择器),是否有方法仅为缩放的系列获取点.y数据 例如,如果我显示多个分支机构(每个分支机构以系列形式绘制)的一段时间内的销售信息,并且如果缩放到一周,我希望知道分支机构一周内的销售总额。highstock是否提供对缩放数据集的访问?一种非常暴力的方法是在缩放数据时对数据进行循环,并评估数据是否可见。也就是说,给定点是否在x轴(和y轴,如果允许在该方向进行缩放)的范围内 图表:{ 活动:{ 重画:函数(){ 总和=0; xAxis=this

如果我缩放HighStock多系列图表(使用导航器或范围选择器),是否有方法仅为缩放的系列获取点.y数据


例如,如果我显示多个分支机构(每个分支机构以系列形式绘制)的一段时间内的销售信息,并且如果缩放到一周,我希望知道分支机构一周内的销售总额。highstock是否提供对缩放数据集的访问?

一种非常暴力的方法是在缩放数据时对数据进行循环,并评估数据是否可见。也就是说,给定点是否在x轴(和y轴,如果允许在该方向进行缩放)的范围内

图表:{
活动:{
重画:函数(){
总和=0;
xAxis=this.xAxis[0];
//循环你的系列
this.series[0].data.forEach(函数(点){
//如果在x轴可见范围内,则添加至总和
if(point.x>=xAxis.min&&point.x xAxis.max){
返回;
}
});
//打印金额
console.log('可见总和:'+总和);
}
}
}
看看它在用什么


您可以评估
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)
        }

现场演示:

这似乎是一个不必要的昂贵操作。希望有人能带来性能更好的东西,或者我们可以直接过滤缩放期间的系列数据集,然后汇总。(这将不涉及检查点值)我会检查。这对highstock图表不起作用(没有单独尝试hicharts),使用导航器或范围选择器。我需要调试,看看它从哪里开始。
        redraw: function() {
            var sum = 0;

            Highcharts.each(this.series[0].points, function(point) {
                if (point.isInside) {
                    sum += point.y;
                }
            });
            console.log(sum)
        }