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])});
Он агрегирует данные на основе месяца. Его нужно изменить, чтобы он был более гибким, чтобы он сам подстраивался под заданный диапазон (может быть, домен здесь мой друг?)