数据分组为每周,每月由用户

时间:2012-03-24 07:01:57

标签: highcharts

我有一个高股票线图,显示给定股票的每日和每周股票价格。问题是当数据阵列足够大时,每日数据点被“采样”到每周数据点,每周数据点被采样到每月数据点。

有没有办法按用户将其设置为每周或每月需要。

提前致谢

3 个答案:

答案 0 :(得分:7)

检查dataGrouping
您可以将其设置为在需要时进行采样,例如example 如果您想停用,可以将其设置为false,如下面的代码或here

series: [{
    type: 'candlestick',
    name: 'AAPL',
    data: arrayOfData,
    dataGrouping: {
        enabled: false
    }
}]

答案 1 :(得分:2)

您可以随时通过每个系列更改dataGrouping.units' update()方法:

//http://api.highcharts.com/highstock#plotOptions.series.dataGrouping.units
var unit = 'week'; //'day' 'month'

//http://api.highcharts.com/highstock#Series.update
_chart.series.forEach(function(ser) {
    ser.update({
        dataGrouping: {
            units: [ [unit, [1]] ]
        }
    }, false);
});

_chart.redraw();

示例:http://jsfiddle.net/X5WbN/20/

答案 2 :(得分:-1)

我们尝试了围绕这个,我们使用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]];
                     });
                 }
             }
         }
     },

@ fiddle