highchart - 显示期间的系列平均值

时间:2013-07-09 21:30:27

标签: highcharts average highstock

使用Highstock,我有一个系列时间戳/值

使用不同的范围选择器(小时,天,周,月,...)或zoomX

我想显示所显示时间段的平均值。

现在,我可以计算整个系列数据的平均值:

for (i = 0; i < chart.series[0].yData.length; i++) {
 total += chart.series[0].yData[i];
} 
seriesAvg = (total / chart.series[0].yData.length).toFixed(4); // fix decimal to 4    places
$('#report1').html('<b>Average:</b>: '+ seriesAvg);

如何仅在显示的数据点上计算平均值?并在缩放后自动刷新?

谢谢

2 个答案:

答案 0 :(得分:1)

使用series.processedYDataseries.points

答案 1 :(得分:-1)

我实现了相同但我注意到processedYdata加载的数据也比屏幕显示的数据多一个。

因为这个原因我添加了一个额外的命令来删除第一个processedYData:

processedYData.splice(0, 1);
下面的

是函数的最终结果

function showStat(objHighStockchart) {

    for (j = 0; j < (json_data.length); j++) {
        var seriesAvg = 0, 
            processedYData = objHighStockchart.series[j].processedYData;
            processedYData.splice(0, 1);
        var seriesMin = Math.min.apply(null, processedYData);
        var seriesMax = Math.max.apply(null, processedYData);
        var i = 0
        var total = 0;
        console.log(processedYData);
        for (i = 1; i < processedYData.length; i++) {
            total += processedYData[i];
        }
        seriesAvg = (total / processedYData.length).toFixed(2); // fix decimal to 4 places

        $('#container_stat' + j).html(
            '<br>Statistics for ' + objHighStockchart.series[j].name + '<br>' +
            'Total: ' + total + ' logs<br>' +
            'Min: ' + seriesMin + ' logs<br>' +
            'Avg: ' + seriesAvg + ' logs<br>' +
            'Max: ' + seriesMax + ' logs<br>'
            + '---' + processedYData
            );
    }
};