带有时间维度的barChart图

时间:2017-10-16 15:32:42

标签: javascript d3.js dc.js crossfilter

我想制作一个条形图,其中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: group data by month,但是在使用.all()之后它没有用。我仍然得到同样的东西。

我试过这个:

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

它只是给我一个空对象。

1 个答案:

答案 0 :(得分:1)

所以这是因为我不熟悉js和复制粘贴示例代码......

问题来自于误用setDate方法,

setDate(1) 

只会将数据中的月份日期设置为第一天,因此group方法只能使用几个唯一的日期。