$('#buttonAddSeries').click(function() {
var series = chart.get('seriesId')
var yData = series.processedYData
var xData = series.processedXData
var data = [];
var period = 3;
/* sumForAverage initialised to sum of yData indexed between 0 and period */
var sumForAverage = yData.slice(0, period).reduce(function(prev, cur) {
return prev + cur;
});
/* Subset yData from period to end. */
yDataWindow = yData.slice(period, yData.length)
/* At each point add the new value and subtract yData[currentIndex]. */
yDataWindow.reduce(function(previousValue, currentValue, currentIndex) {
/* push each iteration to data */
data.push([xData[currentIndex + period], previousValue/period])
return previousValue + currentValue - yData[currentIndex]
/* sumForAverage is passed as starting value */
}, sumForAverage)
chart.addSeries({
name: 'Moving Average',
data: data
});
});
5条答案
按热度按时间4smxwvx51#
你可以计算移动平均值,然后像这样相加:
您可以使用任意数量的点作为句点,而不仅仅是2。
qzwqbdag2#
不,目前HighCharts不做任何类似的数据分析。您需要生成自己的移动平均线,并将其创建为自己的系列或plotLine/plotBand。
qrjkbowd3#
这些天有一个插件的Highcharts与您可以添加一个SMA(简单移动平均线).
请参阅:http://www.highcharts.com/plugin-registry/single/16/technical-indicators
vatpfxk54#
使用技术指标插件here支持移动平均线
以下是您需要包含的JavaScript source的链接:
它是通过将另一个系列添加到以下类型的图表中来实现的:'趋势线',算法:“SMA”,通过id引用相关数据系列:
这是一个JSFiddle。
yzuktlbb5#
如果你想要比for循环更高效的东西:
示例:JS Fiddle with data