繁体   English   中英

D3绑定嵌套JSON文档的数据

[英]D3 bind data of nested JSON document

我有以下格式的MongoDB数据。 我想创建一个这样的数据的多线图,类似于: http//bl.ocks.org/mbostock/3884955,X轴上的日期,Y轴上的持续时间和每个作业都是自己的分开的。

我对数据的嵌套特性感到很难 - 我以前做过一些简单的D3图表,但我不确定如何绑定和访问这些数据。 我在Stackoverflow上看过其他几个类似的例子(使用嵌套函数等),但我还没有完全理解它,我不确定这是否是最好的解决方案。 任何关于最佳方法的指针都将非常感激。

  {
      "result" : [
              {
                      "_id" : {
                              "month" : 1,
                              "day" : 20,
                              "year" : 2014,
                              "job" : "ABC"
                      },
                      "build_duration" : 432565
              },
              {
                      "_id" : {
                              "month" : 1,
                              "day" : 17,
                              "year" : 2014,
                              "job" : "ABC"
                      },
                      "build_duration" : 543256
              },
              {
                      "_id" : {
                              "month" : 1,
                              "day" : 17,
                              "year" : 2014,
                              "job" : "DEF"
                      },
                      "build_duration" : 87634
              },
              {
                  "_id" : {
                          "month" : 1,
                          "day" : 20,
                          "year" : 2014,
                          "job" : "DEF"
                  },
                  "build_duration" : 456230
              }
              ],
      "ok" : 1
  }

这是我要采取的方法。 根据作业ID嵌套数据,然后绘制嵌套数据。 嵌套的代码很简单,只需要

var nested = d3.nest().key(function(d) { return d._id.job; })
               .entries(data.result);

然后你可以像这样绘制它(假设这里省略了适当的变量定义)。

svg.selectAll("path").data(nested)
  .enter().append("path")
  .style("stroke", function(d) { return color(d.key); })
  .attr("d", function(d) { return line(d.values); });

在这里完成示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM