我正在制作一个Dimple/D3图表,将缺失天数的数据绘制为0.
date fruit count
2013-12-08 12:12 apples 2
2013-12-08 12:12 oranges 5
2013-12-09 16:37 apples 1
<- oranges inserted on 12/09 as 0
2013-12-10 11:05 apples 6
2013-12-10 11:05 oranges 2
2013-12-10 20:21 oranges 1
Run Code Online (Sandbox Code Playgroud)
我几乎能够得到nrabinowitz的出色工作答案.
我的数据的时间戳格式为YYYY-MM-DD HH-MM
,并且散列+ D3.extent时间间隔(以天为单位)导致每天午夜0点,即使在同一天晚些时候存在数据.
一个几乎解决方案,我发现是用.setHours(0,0,0,0)
放弃小时/分钟,让所有的数据似乎是从午夜:
...
var dateHash = data.reduce(function(agg, d) {
agg[d.date.setHours(0,0,0,0)] = true;
return agg;
}, {});
...
Run Code Online (Sandbox Code Playgroud)
当每天每天只有一个条目时,这可以正常工作,但是当有多个条目将值加在一起时.所以在上面的12/10数据中:苹果:6,橙子:3.
理想情况下(在我看来)我会将绘图数据与datehash以及散列丢弃小时/分钟分开.这会将午夜 - 日期与D3天间隔进行比较,在缺少数据的日子午夜填写0,然后绘制完整小时/分钟的真实点数.
我已尝试data2 = data.slice()
过setHours
,但图表仍然得到午夜点数:
...
// doesn't work, original data …
Run Code Online (Sandbox Code Playgroud)