can*_*his 4 javascript d3.js force-layout
我正在尝试对RISK进行网络可视化.您可以使用http://bl.ocks.org/4683850上的所需代码查看它.
可视化工作但需要大量的手工劳动.我手动调整了json文件,使得连接具有以下形状:
{
"source": 1,
"target": 0,
"value": 5
}
Run Code Online (Sandbox Code Playgroud)
需要对d3代码做什么,以便连接由节点名称决定?输入将是:
{
"source": "WesternAustralia",
"target": "NewGuinea",
"value": 5
}
Run Code Online (Sandbox Code Playgroud)
每当我尝试时,我都会收到以下错误:
Uncaught TypeError: Cannot call method 'push' of undefined
Run Code Online (Sandbox Code Playgroud)
Chr*_*itt 11
D3文档提供了链接如何工作的解释:
https://github.com/mbostock/d3/wiki/Force-Layout#wiki-links
总之,链接的阵列可以包含指数source
和target
,其中获得重新映射到对象从nodes
,或它们含有的对象引用nodes
自己.您需要重新映射链接source
和target
来自的对象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
};
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3766 次 |
最近记录: |