我需要显示我的2个数据集的平均值,但具有特定的特征:当用户缩放图表时,仅使用缩放区域的值重新计算平均线。 这是怎么做到的?
这是我的JS:
$(function () {
$('#container').highcharts({
chart: {
type: 'scatter',
zoomType: 'xy'
},
title: {
text: 'Test'
},
subtitle: {
text: ''
},
xAxis: {
type: 'datetime',
title: {
enabled: true,
text: 'Date'
},
startOnTick: true,
endOnTick: true,
showLastLabel: true
},
yAxis: {
title: {
text: ''
}
},
legend: {
layout: 'vertical',
align: 'left',
verticalAlign: 'top',
x: 100,
y: 70,
floating: true,
backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF',
borderWidth: 1
},
plotOptions: {
scatter: {
marker: {
radius: 5,
states: {
hover: {
enabled: true,
lineColor: 'rgb(100,100,100)'
}
}
},
states: {
hover: {
marker: {
enabled: false
}
}
},
tooltip: {
headerFormat: '<b>{series.name}</b><br>',
pointFormat: '{point.x} date, {point.y} dose'
}
}
},
series: [{
name: 'ag',
color: 'rgba(223, 83, 83, .5)',
data: [[1426719600000,0.9659],[1426719600000,0.8928],[1445205600000,1.6428],[1445205600000,1.4711],[1445205600000,1.4209],[1445205600000,1.9574],[1445205600000,1.1226],[1445205600000,0.8159],[1445205600000,1.0114],[1445205600000,0.9168],[1445464800000,1.175],[1445464800000,1.2219],[1445464800000,1.2641],[1445464800000,1.3006],[1445464800000,0.9375],[1445464800000,0.8966],[1445464800000,0.9374],[1445464800000,1.0811]]
}, {
name: 'cf',
color: 'rgba(119, 152, 191, .5)',
data: [[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.015],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.265],[1445378400000,2.015],[1445378400000,2.015],[1445378400000,2.015],[1445464800000,1.2254],[1445464800000,1.1065],[1445464800000,1.3482],[1445464800000,1.3015],[1445292000000,1.2297]]
}]
});
});
提前致谢!
答案 0 :(得分:2)
这可以通过多种方式完成。我将通过chart.events.redraw
告诉你如何做到这一点。无论何时进行缩放(或重置缩放),图表都会重新绘制,这为我们在计算和添加项目时提供了很好的帮助。以下是redraw
事件的代码块:
这是一个实时 demo 。
我把它弄得很冗长所以你可以看到每一步。我们将使用getExtremes()
来找出最大和最小xAxis
和yAxis
索引是什么。由此我们确定每个系列中的点是否在这个&#34;窗口内#34;。如果他们不在窗口内,我们会忽略。如果是,那么我们将y值添加到var并将点计数器增加1.一旦完成,我们进行简单的检查以确保我们不会除以零然后计算平均值。
一旦我们得到平均值,我们就会在上面计算的平均值上绘制plotLine
。首先,我们看看我们的id
是否存在情节线。如果它,我们删除它。然后我们创建新的情节线。
还有一些清理工作(例如,你是否根据你的业务规则包含一个0值的情节线),但这应该让你开始。
尝试在编辑中添加代码块,因为原始答案尝试不会让它通过。仍然无法发布代码块。