график barChart с измерением времени

Я хотел бы сделать гистограмму, где ось x - это дата, например. 2017-08-12, а значение y - это количество строк данных (т. Е. Количество записей) на одну и ту же дату.

// get data into right format
var dateFormat = d3.time.format("%Y-%m-%d");
pageViews.forEach(function(d) {
    d['timestamp'] = dateFormat.parse(d['timestamp'].slice(0,10));
    d['timestamp'].setDate(1);
});

// Create Crossfilter instance
var cf = crossfilter(data);

var dateDim = cf.dimension(function(d) {return d['timestamp'];});

var numByDate = dateDim.group();

но если я сделаю

console.log(numByDate.top(Infinity));

это возвращает 5 элементов, которые являются первым днем ​​каждого месяца, поэтому у меня есть группа с точки зрения года-месяца, а не года-месяца-дня, как я могу решить эту проблему?

Я просмотрел этот crossfilter.js: групповые данные по месяцам, но он не работает, после использования .all () я все равно получаю то же самое.

И я попробовал это:

var numByDate = dateDim.group(function(d) {return d['timestamp'];});

он просто возвращает мне пустой объект.


person Sam    schedule 16.10.2017    source источник


Ответы (1)


Так что это результат моего незнания js и кода примера копирования и вставки ...

Проблема возникает из-за неправильного использования метода setDate,

setDate(1) 

просто установит день месяца в данных на первый день, поэтому групповой метод будет иметь только несколько уникальных дат для работы.

person Sam    schedule 16.10.2017