我遇到很多问题让HighStock使用dataGrouping,以便在需要时显示正确的单位,我经常遇到运行时错误。
背景:我正在根据新近度加载不同粒度的时间序列数据,因此对于小于8小时的指标,数据的粒度是每分钟,对于任何数据,最多14天,按小时,对于超过14天的数据,它是每天测量的。我假设可以使用dataGrouping,但是在明确更改分组时遇到了一些问题(请参阅http://jsfiddle.net/xckaxaf2/8/获取完整示例):
chart.series[0].update({ dataGrouping: { units: [ ['minute', [1]] ] } });
我遇到的问题是:
有谁知道如何解决这些问题并根据极端情况下的数据动态设置dataGrouping间隔?
我在https://github.com/highslide-software/highcharts.com/issues/4050
提出了一个问题答案 0 :(得分:1)
作为解决方案/解决方法,您可以包装负责dataGrouping的方法,并在那里设置该选项:http://jsfiddle.net/xckaxaf2/9/
(function (H) {
H.wrap(H.Series.prototype, "processData", function (c) {
var chart = this.chart,
dg = this.options.dataGrouping,
currentUnits = dg.units[0][0],
min = chart.xAxis[0].min,
targetUnit = getUnitFromRangeStart(min);
if (currentUnits !== targetUnit) {
console.log('Changing interval from ' + currentUnits + ' to ' + targetUnit);
/* Change grouping for all charts other than the navigator */
dg.units = [
[targetUnit, [1]]
];
}
c.call(this);
});
})(Highcharts);
只需确保将dataGrouping.forced
选项设置为true即可。因此将始终使用dataGrouping。