在Highcharts中加载几个大型数据集

时间:2014-07-20 17:15:31

标签: javascript mysql highcharts data-visualization

在Highcharts中,有demosarticles将大型数据集加载到Highcharts中。

我们知道,如果数据太大,今天的浏览器都无法做到这一点。请参阅此article,它建议使用表格的聚合和分离将数据加载到HighCharts中,但我认为解决方案不符合我的需要。

我使用mysql存储我的数据并拥有大量表格。要在Highcharts上绘制的数据是基于时间序列的,这意味着数据是每天一次。

我需要加载包含此数据的几个系列集的图表(基于标准),并且数据无法汇总为每月,因为它只需要以每日模式显示。除此之外,我必须将图表的第一个视图设置为All

由于用户想要查看每日更改而不聚合数据的原因。有时存在不规则数据,聚合不是最佳选择。要加载的数据来自1980年

将这些数据加载到HighCharts上的最佳策略或技术是什么?

2 个答案:

答案 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天仍会显示足够高的峰值,因此您很难在特定日期失去看到激烈事件的机会。然后,用户可以放大并查看更详细的数据。四十五年的日常数据减少到几千点。