Группировка данных по неделям, по месяцам по пользователям - PullRequest
6 голосов
/ 24 марта 2012

У меня есть линейный график, показывающий дневные и недельные цены на данную акцию. Проблема заключается в том, что когда массив данных достаточно велик, ежедневные точки данных «выбираются» в еженедельные точки данных, а еженедельные точки данных отбираются вплоть до месячных точек данных.

Есть ли способ установить их пользователем еженедельно или ежемесячно, когда это необходимо.

Заранее спасибо

Ответы [ 3 ]

7 голосов
/ 12 апреля 2012

Проверьте о dataGrouping .
Вы можете установить его для выборки, когда это необходимо, например, пример .
Или , если вы хотите отключить , вы можете установить его в значение false, как код ниже или здесь :

series: [{
    type: 'candlestick',
    name: 'AAPL',
    data: arrayOfData,
    dataGrouping: {
        enabled: false
    }
}]
2 голосов
/ 12 октября 2015

Вы можете изменить 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/

0 голосов
/ 09 апреля 2015

Мы попробовали взломать это, где использовали Highstock's (Splinechart) RangeSelector , Event и 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]];
                     });
                 }
             }
         }
     },

@ скрипка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...