使用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);
如何仅在显示的数据点上计算平均值?并在缩放后自动刷新?
谢谢
答案 0 :(得分:1)
使用series.processedYData
或series.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
);
}
};