Как заставить рикшу собирать данные по неделям, а не дням

Мои значения x, y состоят из времени эпохи unix (примерно за год) и целого числа. Я рисую ось x, используя это:

        x_axis = new Rickshaw.Graph.Axis.Time
          graph: graph

Результат выглядит хорошо, но галочки привязаны к дням (как я полагаю), и я получаю провалы по выходным, когда ничего не происходит. Я хотел бы агрегировать по неделям. Может ли рикша объединить значения y вместе для всех времен, выпадающих на одну и ту же неделю?

Вот рабочий jsfiddle: http://jsfiddle.net/jTmWC/


person Mike McKay    schedule 03.04.2013    source источник
comment
Похоже, это то, что вы должны сделать перед передачей данных в функцию графика. Вы не показали нам, откуда вы берете данные или в каком они формате, поэтому мы не можем вам в этом помочь.   -  person Lars Kotthoff    schedule 06.04.2013
comment
Я могу агрегировать по неделям вручную, но кажется, что должно происходить какое-то сопоставление с днями, поэтому я надеялся, что вместо этого смогу сопоставить с днями. (См. приведенный выше URL-адрес скрипки)   -  person Mike McKay    schedule 06.04.2013
comment
Отображение, которое вы видите, на самом деле представляет собой только метки галочек, которые d3 устанавливает разумным образом. Он не выполняет агрегацию сам по себе.   -  person Lars Kotthoff    schedule 06.04.2013


Ответы (2)


Вы можете агрегировать данные за месяц, используя этот код:

var aggregated = d3.nest()
               .key(function(d) { return (new Date(+d.x * 1000)).getMonth(); })
               .rollup(function(d) { return d3.sum(d, function(e) { return +e.y; }); })
               .entries(data)
               .map(function(d) { return {x: +d.key, y: d.values}; });

Обновлен jsfiddle здесь. Обратите внимание, что я также изменил единицу времени для оси — возможно, вам придется немного поиграть с ней, чтобы она отображала нужные вам метки.

person Lars Kotthoff    schedule 06.04.2013
comment
Спасибо, Ларс. Я искал недели против месяца, но я могу понять это. Где документы для гнезда, ключа и свертки? - person Mike McKay; 09.04.2013
comment
Вы можете найти их в документации по API. - person Lars Kotthoff; 09.04.2013

Если вы не хотите использовать d3 для преобразования данных, вы всегда можете использовать символы подчеркивания. Это очень легко понять и использовать в большинстве javascript-проектов. Я сделал то же самое в этом скринкасте на рикше: http://tagtree.tv/d3-with-rickshaw-and-angular

person hendrikswan    schedule 07.01.2014