d3.js и nvd3.js как показать график количества кликов на сайте

Я хочу дать пользователю гибкость в выборе диапазона даты и времени и увидеть график количества кликов за этот период. Диапазон может быть любым, например, 1 год, 6 месяцев, 1 месяц, 1 неделя, 1 день или последние 6 часов... В любой момент времени есть ровно 1 клик. Итак, мой набор данных выглядит так:

Time                           Click
2012-01-01 01:00:00             1
2012-01-01 02:00:00             1
2012-01-01 03:10:00             1
2012-01-01 03:20:01             1
2012-06-02 11:00:00             1
2012-12-01 01:00:00             1
2013-05-01 12:00:00             1    

График должен иметь возможность регулировать свою ось X в соответствии с тем, какие данные ему доступны. Например, если мы проверяем данные по дням, то он должен показывать диапазон ЧЧ:00, а если мы ищем данные за неделю, то он должен соответствовать диапазону Mon-Tue-Wed.

Мой пример кода выглядит так:

 `chart.xAxis.showMaxMin(false).tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });
  chart.yAxis.tickFormat(d3.format(',.2f'));
  d3.select('#chart1 svg')
    .datum(jsonData)
      .call(chart);`

Как справиться с агрегацией данных точки? Нужно ли предоставлять набор данных с агрегацией или диаграмма может делать это сама, предоставляя ему какую-то функцию.


Обновить


Я попытался с помощью накопительного пакета и нашел, что это дает некоторую агрегацию к моим данным сейчас

rollup = d3.nest().key(function(d) {
          return (new Date(+d[0])).getMonth(); 
      }).rollup(function(d) {
        return d3.sum(d, function(e) { return +e[1]; });
      }).entries(jsonDataValues)
    .map(function(d) {data.push([d.key,d.values])});

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

0 ответов

Другие вопросы по тегам