繁体   English   中英

d3强制定向网络的json表示形式

[英]json representation for d3 force directed networks

我正在尝试对RISK进行网络可视化。 您可以在http://bl.ocks.org/4683850上使用所需的代码进行查看。

可视化可以工作,但是需要大量的人工。 我手动调整了json文件,以使连接具有以下形状:

{
    "source": 1,
    "target": 0,
    "value": 5
} 

一个人需要对d3代码做些什么,以使连接由节点的名称确定? 输入将是:

{
    "source": "WesternAustralia",
    "target": "NewGuinea",
    "value": 5
} 

每当我尝试时,都会出现以下错误:

Uncaught TypeError: Cannot call method 'push' of undefined 

D3文档提供了有关链接如何工作的说明:

https://github.com/mbostock/d3/wiki/Force-Layout#wiki-links

简而言之,链接数组可以包含sourcetarget索引,它们从nodes重新映射到对象,或者包含从nodes本身到对象的引用。 您需要将链接的sourcetarget重新映射到nodes的对象。

假设您的source属性和target属性使用的名称如上面第二个示例所示,则可以将以下代码段添加到d3.json回调的开头以进行重新映射:

    var nodeMap = {};
    graph.nodes.forEach(function(x) { nodeMap[x.name] = x; });
    graph.links = graph.links.map(function(x) {
      return {
        source: nodeMap[x.source],
        target: nodeMap[x.target],
        value: x.value
      };
    });

暂无
暂无

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

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