javascript - 带时间维度的条形图

标签 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'];});

它只是返回一个空对象。

最佳答案

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

这个问题是由于误用了 setDate方法,

setDate(1) 

只会将数据中的日期设置为第一天,因此 group 方法只会处理几个唯一的日期。

关于javascript - 带时间维度的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46773919/

相关文章:

javascript - 使用 D3 将 SVG 文本元素 id 与数据 id 进行匹配

javascript - dc.js 图表不会显示线条和 y 轴值

javascript - 散点图的错误

javascript - dc.js - 如何获取数据集中列的平均值

javascript - 在 div 容器中显示错误消息以使用 Jquery 进行验证

javascript正则表达式从路径字符串中替换3digitis

javascript - gulp 任务运行请求显示日志消息太晚了

c# - 如何知道用户来自A站点

javascript - d3js 跨小型多个图表的链接线

javascript - 如何在 d3.js 中移动圆圈(数据点)