HighCharts:访问Zoomed系列数据

问题描述 投票:1回答:2

如果我缩放HighStock多系列图表(使用导航器或范围选择器),有没有办法只为缩放系列获取point.y数据?

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

highcharts
2个回答
0
投票

一种非常强力的方法是在缩放时循环数据并评估它是否可见。也就是说,是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,但它提供的minmax值可能会在生效后发生变化,这可能会产生一些意想不到的结果。


0
投票

您可以在每个点检查isInside标志:

        redraw: function() {
            var sum = 0;

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

现场演示:http://jsfiddle.net/BlackLabel/7kmzhecy/

© www.soinside.com 2019 - 2024. All rights reserved.