2017-10-16 85 views
1

我想制作一个x轴为日期的条形图,例如2017年8月12日,y值是同一日期的数据行数(即记录数)。带时间维度的barChart plot

// 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

所以这是我不熟悉的js的结果,并复制粘贴示例代码...

问题来自setDate方法的误用,

setDate(1) 

将刚刚成立的当天月的数据到第一天,所以该组方法将只有几个独特的日期可以使用。