我正在使用highstocks库并尝试在Graph上计算Y值的平均值。此值是动态的,即每次用户放大或更改滑块时,它应重新计算选定时间戳区域上的Y值的平均值。 我在小提琴here中试过这个。但是它给出了x {timestamp}的值,它也没有为所选的x范围提供Y值。
xAxis: {
events: {
setExtremes: function (e) {
computeAvg(e);
}
}}
答案 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'
});
}