Highstock 显示所选区域的平均值

Highstock show avegrage values of selected Area

我正在使用 highstocks 库并尝试计算图上 Y 值的平均值。这个值是动态的,即每次用户放大或更改滑块时,它应该重新计算所选时间戳区域的 Y 值的平均值。 我在 fiddle here 中试过这个。但它给出了 x { timestamp} 的值,它也没有为选定的 x 范围提供 Y 值。

xAxis: {
    events: {
        setExtremes: function (e) {
            computeAvg(e);
        }
    }}

您可以捕获 redraw() 事件并准备从轴获取极值的函数。下一步是遍历所有点以找到可见的点。如果是,则将此点添加到总和中。最后一步是将总和除以点数。

function computeAvg() {
        var chart = this,
            series = chart.series,
            yAxis = chart.yAxis[0],
            xAxis = chart.xAxis[0],
            extremes = xAxis.getExtremes(),
            min = extremes.min,
            max = extremes.max,
            plotLine = chart.get('avgLine'),
            sum = 0,
            count = 0;

        Highcharts.each(series, function (serie, i) {
            if(serie.name !== 'Navigator') {
                Highcharts.each(serie.data, function (point, j) {
                    if (point.x >= min && point.x <= max) {
                        sum += point.y;
                        count++;
                    }
                });
            }
        });

        yAxis.removePlotLine('avgLine');
        yAxis.addPlotLine({
            value: (sum/count),
            color: 'red',
            width: 2,
            id: 'avgLine'
        });

    }

示例:http://jsfiddle.net/0tfkfh2v/16