在Highcharts中,有demos和articles将大型数据集加载到Highcharts中。
我们知道,如果数据太大,今天的浏览器都无法做到这一点。请参阅此article,它建议使用表格的聚合和分离将数据加载到HighCharts中,但我认为解决方案不符合我的需要。
我使用mysql存储我的数据并拥有大量表格。要在Highcharts上绘制的数据是基于时间序列的,这意味着数据是每天一次。
我需要加载包含此数据的几个系列集的图表(基于标准),并且数据无法汇总为每月,因为它只需要以每日模式显示。除此之外,我必须将图表的第一个视图设置为All
。
由于用户想要查看每日更改而不聚合数据的原因。有时存在不规则数据,聚合不是最佳选择。要加载的数据来自1980年
将这些数据加载到HighCharts上的最佳策略或技术是什么?
答案 0 :(得分:4)
所以,你说你每天都有35年的数据。对我而言,它是< 13k分。然后你有图表,例如600px宽。这意味着你在1pixel上有20个点。你说聚合是坏的,因为用户需要看到真实的数据。让我问一下,用户将如何看到这些点,何时在1px中有20个?也许我已经老了,但我无法看到这些点真的很好,只是一些'胖路径'。比较这些示例:http://jsfiddle.net/Fusher/4ytzuv7o/1/
在第二个例子中禁用了dataGrouping:
dataGrouping: {
enabled: false
}
在第一个示例中放大时,无论如何都会获得真实的数据。
如果你真的不能使用dataGrouping,那么另一种解决方案呢?禁用导航器和“全部”按钮,用户只能在指定的范围内进行缩放,如下所示:http://jsfiddle.net/Fusher/4ytzuv7o/3/
$('#container').highcharts('StockChart', {
rangeSelector: {
inputEnabled: false,
buttons: [{
type: 'month',
count: 1,
text: '1m'
}, {
type: 'month',
count: 3,
text: '3m'
}, {
type: 'month',
count: 6,
text: '6m'
}, {
type: 'ytd',
text: 'YTD'
}, {
type: 'year',
count: 1,
text: '1y'
}],
selected: 0
},
navigator: {
enabled: false
},
series: [{
name: 'AAPL',
data: data,
dataGrouping: {
enabled: false
}
}]
});
答案 1 :(得分:1)
您是否尝试过加载每日数据?如果您在过去45年中每天都有一个数据点,那么它只有16,000点。无论如何,我首先要确保加载一切对于highcharts来说太多了,如果是这样的话,考虑一个动态聚合脚本,其中缩放超过阈值,比如5年,将数据集触发到每周聚合集。
这是我的潜在解决方案:
使用全分辨率数据集,每周聚合集以及可能每月设置加载图表。然后,您可以在当前视图的点数上设置事件侦听器。当它达到某个阈值时,您重绘为聚合。
由于总计7天仍会显示足够高的峰值,因此您很难在特定日期失去看到激烈事件的机会。然后,用户可以放大并查看更详细的数据。四十五年的日常数据减少到几千点。