如何使用D3.js从多个json获取数据以创建条形图

时间:2016-08-20 17:15:05

标签: d3.js

我是使用D3.js的新手。我有两个单独的jsons。从一个json我想选择一个值并在X轴上显示它。从第二个json我想要选择一些值并在y轴上显示它。我在json中都有一个常见的东西,就是objectID。但没有得到如何获取这些值并在条形图上显示。我在以下网址上分享了我的JSON。

http://www.jsoneditoronline.org/?id=1198d736c68ea9be81e77c7fe3982ab3 http://www.jsoneditoronline.org/?id=0dba90821a577ab28b5725b877706f3d

1 个答案:

答案 0 :(得分:1)

您需要请求两个文件,然后手动合并数据。要请求这两个文件,我会使用d3.queue,并将数据与简单的forEach循环合并:

queue()
    .defer(d3.json, 'json1.json')
    .defer(d3.json, 'json2.json')
    .await(makePlot);

function makePlot(error, json1, json2){
  if (error) throw error;

  var merge = [];
  json1.forEach(function(d0){
    json2.forEach(function(d1){
      // for matching ids, create a datapoint
      if (d0.ObjectID === d1.ObjectID){
        merge.push(
          {
            ObjectID: d0.ObjectID,
            x: d1.Name,
            y: d0.Defects.Count
          }
        );
      }
    });
  });

Here's some full running code.