Javascript d3嵌套两个网络csv文件(节点和边)

Javascript d3嵌套两个网络csv文件(节点和边),javascript,csv,d3.js,nested,graph-visualization,Javascript,Csv,D3.js,Nested,Graph Visualization,我想做的是d3。将一个csv嵌套到另一个csv中 节点列表如下所示: id,movie,year,genre 85442,Hamlet,1907,Drama 57421,Don Quijote,1908,Drama 13146,Amleto [I],1908,Drama 85443,Hamlet,1908,Drama 160468,Othello,1909,Drama 160468,Othello,1909,Romance 边或链接看起来像这样: sourceid,targetid 234,9

我想做的是d3。将一个csv嵌套到另一个csv中

节点列表如下所示:

id,movie,year,genre
85442,Hamlet,1907,Drama
57421,Don Quijote,1908,Drama
13146,Amleto [I],1908,Drama
85443,Hamlet,1908,Drama
160468,Othello,1909,Drama
160468,Othello,1909,Romance
边或链接看起来像这样:

sourceid,targetid
234,99455
234,125817
234,201681
476,72885
476,188536
476,246634
1028,14948
1028,60050
因此,我想通过给定的ID将边嵌套到节点列表中

我正在做一些不干净的筑巢,但现在看起来不起作用:

    d3.csv("edges.csv", function(edges){
    d3.csv("nodes.csv", function(nodes){

        var nested_data = d3.nest()
            .key(function(d) { return d.sourceid; })
            .key(function(d) { return d.id; })
            .entries(edges)
            .entries(nodes);     
        console.debug(nested_data);
    });
    });
我搜索了帮助,发现了以下内容:

但我无法控制它。真的那么难吗?或者有没有其他方法可以做到这一点?我发现了这个可视化,它还处理两个csv文件和网络结构,而不使用nest

谢谢


Kim

因为很多人都看了这个问题,我想写一篇简短的后续文章,说明如何解决这个问题,据我现在的理解

拉尔斯已经给出了正确的暗示。所以这里只是一个编码版本

d3.csv("edges.csv", function(edges){
d3.csv("nodes.csv", function(nodes){

  var newlist = [];

  var i = edges.length;

  while(i--){

    var edge = edges[i];

      newlist.push(

          nodes[edge.sourceid].x),
          nodes[edge.targetid].y)

      );
  }

  var nested_data = d3.nest()
      .key(function(d) { return ... })
      .entries(newlist);  

  });
});
它并不完全适合这个问题,因为它假设节点列表是按ID排序的。上面的两个列表可以用下面的内容来表示


希望这能有所帮助。

听起来筑巢不是最好的方法。你所需要做的就是在边列表上循环,并在节点列表中找到每个边的源和目标。好的,谢谢!你们有循环的例子吗。我可以用简单的js编写,但也许d3已经有了一些内置的方法?一旦我找到一个解决方案,我会把它贴在这里。D3中没有任何内置的解决方案。