根据highcharts范围选择器的值,我想更改数据分组。在我的柱形图中,如果选择了一周,应该有7个栏,如果选择了一天,则应该有24个栏,如果选择了一个月,那么每个月的每一天应该有一个栏。根据范围选择器调整Highcharts数据分组
似乎没有任何方法可以在Highchart配置中提供一个函数来完成此操作,但我可能会遗漏一些东西。
我目前的计划是处理范围选择器上的单击事件,以更新系列数据以包含正确数量的点。但可能有更好的办法。
感谢
根据highcharts范围选择器的值,我想更改数据分组。在我的柱形图中,如果选择了一周,应该有7个栏,如果选择了一天,则应该有24个栏,如果选择了一个月,那么每个月的每一天应该有一个栏。根据范围选择器调整Highcharts数据分组
似乎没有任何方法可以在Highchart配置中提供一个函数来完成此操作,但我可能会遗漏一些东西。
我目前的计划是处理范围选择器上的单击事件,以更新系列数据以包含正确数量的点。但可能有更好的办法。
感谢
当然有一堆options available in highstock for data grouping。
你应该看的主要是units
。在这里您可以指定允许哪种组。
顶部带有groupPixelWidth
,你有你所需要的,这个宽度定义了图表中一个点的点数是多少,如果图表上的点数越多,每点的宽度越小,一旦它下降这个高门槛阈值会强制分组。保持这个大小足以强制下一个级别的分组,因为你在屏幕上不要超过30个点。
dataGrouping: {
units: [
['hour', [1]],
['day', [1]],
['month', [1]],
['year', null]
],
groupPixelWidth: 100
}
我们试图解决这个黑客攻击,在这里我们使用Highstock的(Splinechart)RangeSelector,事件和DataGrouping。点击每周rangeselectorButton,我们通过setExtremes捕获此事件。发布事件后将其近似为“总和”。如果您使用两个序列而不是迭代对象。
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]];
});
}
}
}
},