0

使用 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);

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

谢谢

4

2 回答 2

1

使用series.processedYDataseries.points

于 2013-07-10T11:01:18.427 回答
-1

我实现了同样的方法,但我注意到处理的数据加载的数据也比屏幕上显示的数据多一个。

出于这个原因,我添加了一个额外的命令来删除第一个处理的 YData:

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
            );
    }
};
于 2015-06-15T13:08:01.240 回答