Javascript d3嵌套两个网络csv文件(节点和边)
我想做的是d3。将一个csv嵌套到另一个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
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中没有任何内置的解决方案。