带时间维度的条形图
barChart plot with time dimension
我想制作一个 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));
这个returns5个元素是每个月的第一天,所以我的组是按年-月而不是年-月-日,我该如何解决?
我调查了这个 ,但它没有用,在使用 .all() 之后我仍然得到同样的结果。
我试过这个:
var numByDate = dateDim.group(function(d) {return d['timestamp'];});
它只是 returns 我一个空对象。
所以这是我不熟悉 js 和复制粘贴示例代码的结果...
问题是由于误用了 setDate 方法,
setDate(1)
只会将数据中的日期设置为第一天,因此分组方法只能使用几个唯一的日期。
我想制作一个 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));
这个returns5个元素是每个月的第一天,所以我的组是按年-月而不是年-月-日,我该如何解决?
我调查了这个
我试过这个:
var numByDate = dateDim.group(function(d) {return d['timestamp'];});
它只是 returns 我一个空对象。
所以这是我不熟悉 js 和复制粘贴示例代码的结果...
问题是由于误用了 setDate 方法,
setDate(1)
只会将数据中的日期设置为第一天,因此分组方法只能使用几个唯一的日期。