使用嵌套的d3和ParseDate函数格式化数据

时间:2016-06-07 21:12:58

标签: javascript d3.js multidimensional-array date-formatting

我陷入了一个地狱循环,试图在我的y值轴上构建一个带有x时间轴和嵌套函数的条形图。

假设我有一个从5月1日到5月8日的7天的数据集。

var dataset = [{"strength":1702,"day":"2016-05-01T05:00:00.000Z","rescue":2,"name":"batman"},
{"strength":1703,"day":"2016-05-01T05:00:00.000Z","rescue":4,"name":"batman"},
{"strength":1704,"day":"2016-05-01T05:00:00.000Z","rescue":1,"name":"batman"},
{"strength":1705,"day":"2016-05-02T05:00:00.000Z","rescue":6,"name":"superman"},
{"strength":1706,"day":"2016-05-02T05:00:00.000Z","rescue":8,"name":"superman"},
{"strength":1707,"day":"2016-05-02T05:00:00.000Z","rescue":4,"name":"superman"},
{"strength":1708,"day":"2016-05-03T05:00:00.000Z","rescue":5,"name":"superman"},
{"strength":1709,"day":"2016-05-05T05:00:00.000Z","rescue":1,"name":"ironman"},
{"strength":1710,"day":"2016-05-05T05:00:00.000Z","rescue":12,"name":"ironman"},
{"strength":1711,"day":"2016-05-05T05:00:00.000Z","rescue":9,"name":"ironman"},
{"strength":1712,"day":"2016-05-06T05:00:00.000Z","rescue":1,"name":"ironman"},
{"strength":1713,"day":"2016-05-07T05:00:00.000Z","rescue":8,"name":"ironman"},
{"strength":1714,"day":"2016-05-09T05:00:00.000Z","rescue":3,"name":"Antman"}]

我想用整整7天来构建我的x轴,所以我正在做这样的事情:

 dataset.forEach(function(d) {
  d.date = parseDate(d.key);
});

好的我现在可以或多或少地为条形图的x轴格式化数据。现在让我们说,对于y轴值,我想要一天的救援次数,我需要做这样的事情:

 dataset = d3.nest()
  .key(function(d) { return d.date; })
  .rollup(function(d) { return d.length; })
  .entries(dataset);

但问题是,在我应用这个嵌套函数后,我的日期数据再次出现在字符串中,如果我第二次使用parseDate函数,则会出现“t.slice错误”。

所以最后我有一个域绑定到d.date但是当我将我的嵌套数据绑定到我的svg选择时,我不能使用d.date,因为我的日期数据没有格式化。如果我在嵌套选择后执行dataset.forEach,那么每天都不能让我的x轴绑定,因为我的返回数据中不会显示所有7天。

希望你明白我的观点并找到解决方案。感谢。

更新:我最终用两个d3.json函数调用我的数据集两次不是很干净但是......

0 个答案:

没有答案