Highstock显示所选区域

时间:2015-08-18 07:16:23

标签: javascript jquery highcharts highstock

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

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

1 个答案:

答案 0 :(得分:0)

你可以捕捉redraw()事件并准备从轴获得极端的函数。下一步是遍历所有点以查找可见的点。如果是,则将此点添加到sum。最后一步是除以点数。

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