Javascript Highcharts:如何设置数据分组
我有一个包含大量数据的highstock图,我可以定义如何对数据进行分组,但我希望用户指定要使用的数据分组,并在日、周、月等之间动态更改 那么,是否有可能有一个按钮,用户可以通过该按钮更改数据的分组方式,如果有,如何更改 有许多未记录的特性,例如currentDataGrouping,但是没有设置数据分组。。。我可以看到任何方式Javascript Highcharts:如何设置数据分组,javascript,jquery,highcharts,highstock,Javascript,Jquery,Highcharts,Highstock,我有一个包含大量数据的highstock图,我可以定义如何对数据进行分组,但我希望用户指定要使用的数据分组,并在日、周、月等之间动态更改 那么,是否有可能有一个按钮,用户可以通过该按钮更改数据的分组方式,如果有,如何更改 有许多未记录的特性,例如currentDataGrouping,但是没有设置数据分组。。。我可以看到任何方式 series: [{ type: 'column', name: title,
series: [{
type: 'column',
name: title,
data: data,
dataGrouping: {
units: [['week', [1]], ['month', [1]]]
}
}]
API有一个更新系列()的方法。e、 g 您应该能够使用此API调用修改任何系列属性 例如,您可以定义两个系列对象,并更新图表,以便在单击按钮时使用所需的对象:
var seriesWeek = {
type: 'column',
name: title,
data: data,
dataGrouping: {
units: [ ['week', [1] ] ]
}
}
var seriesMonth = {
type: 'column',
name: title,
data: data,
dataGrouping: {
units: [ ['month', [1] ] ]
}
}
chart.series[0].update(seriesWeek);
我们尝试了一种破解方法,使用了Highstock(Splinechart)、Event和。单击weekly Range Selector按钮,我们就可以通过它捕获此事件。捕捉事件后,将其近似为“总和”。如果您使用的是两个序列,则迭代对象
events: {
setExtremes: function (e) {
if (e.rangeSelectorButton != undefined) {
var triger = e.rangeSelectorButton;
if (triger.type == 'week') {
$.each(this.series, function (index, obj) {
obj.options.dataGrouping.units[0] = ['week', [1]];
});
} else if (triger.type == 'day') {
$.each(this.series, function (index, obj) {
obj.options.dataGrouping.units[0] = ['day', [1]];
});
}
}
}
},
@我始终只有一个timeseries,因此这种方法对我很有效(无需手动更新每个timeseries): 之后,很容易更换装置:
self.setCandleInterval = function (pUnit, pInterval) {
self.myChart.update({
plotOptions: {
series: {
dataGrouping: {
units: [
[pUnit, [pInterval]]
]
}
}
}
});
}
这样做的表面上有点愚蠢,应该能够强制使用哪个数据分组…您想要在哪些数据分组选项之间切换?周和月,也可能是天,但数据分组只会随着范围的变化而变化。我可能误解了您的要求,但我认为您可以通过单击按钮来更新系列选项(请参阅更新的答案。实际上,传递变量选项以更新就足够了:
chart.series[0]。更新({dataGrouping:{forced:true,units:[['week',[1]]]]})
self.myChart = new window.Highcharts.stockChart(pChartDivContainer, {
title: {
text: 'My title'
},
rangeSelector: {
enabled: true
},
plotOptions: {
series: {
dataGrouping: {
approximation: 'ohlc',
units: [
["minute", [1]]
],
forced: true,
enabled: true,
groupAll: true
}
}
}
}, function (chart) {
self.onChartReady();
});
self.setCandleInterval = function (pUnit, pInterval) {
self.myChart.update({
plotOptions: {
series: {
dataGrouping: {
units: [
[pUnit, [pInterval]]
]
}
}
}
});
}