我使用D3.js阅读了许多关于强制布局的代码,并且我发现边缘元素只是“源”和“目标”。我想生成一个图形,其布局与Gephi中的'Altas'相似。在我的数据中,边具有“权重”元素,这些元素描述了它所链接的节点的相关性,并且在启动力布局时应考虑这一点。这样类似的节点可以聚集在一起。有没有一种方法来实现这一点,或者强制布局中使用的物理模型与边缘的重量无关?如何使用D3.js强制布局生成边缘权重网络图
1
A
回答
0
是的,这在D3.js中是可以的,但是,我推荐使用webcola库,因为它更简单,更快速,并且与D3.js一起工作得很好。
除了source
和target
以外,每个边缘可能包含其他信息。因此,很容易添加weight
属性,如:
let edge = {
source: node1,
target: node2,
weight: 2
};
当使用webcola(https://github.com/tgdwyer/WebCola/),你可以添加一些约束来使用你的权重,或者您可以使用linkDistance
作为一个函数,解释在这里:https://github.com/tgdwyer/WebCola/wiki/link-lengths,如:
let weightFactor = 10;
let d3cola = cola.d3adaptor(d3)
.size([500, 400])
.linkDistance(function (l) { return l.weight * weightFactor; };
因此,步骤是:
- 建立你的图与D3.js,但是,
- 与webcola
模拟它可以为这样的d3.js创建webcola模拟的一个实例:
d3cola.avoidOverlaps(true)
.handleDisconnected(false)
.start(30);
let simulation = this.d3cola
.nodes(graph.nodes) // graph is your graph
.links(graph.edges)
.start();
+0
感谢您的回答!这确实给了我一个很好的解决方案。 –
+0
我很高兴我的解决方案得到了帮助。 – Guybrush
相关问题
- 1. D3.js强制布局路径标签沿边缘移动不正确
- 2. 如何使用React创建d3强制布局图形
- 3. 添加边缘权重以绘制网络中的输出x
- 4. D3.js强制布局:如何隔离节点组?
- 5. 如何在d3力布局中实现双向平行边缘?
- 6. D3 JS - 强制图 - 删除节点后不重新启动布局节点
- 7. 使用d3画布强制定向图形多边形
- 8. R中绘制网络(控制边缘厚度加上非重叠边缘)
- 9. 如何使d3.js中的节点的距离强制布局更大?
- 10. D3强制定向布局与边界框
- 11. d3.js - 将链接大小设置为强制布局
- 12. D3.js v4强制布局和固定节点异常
- 13. d3.js强制布局在加载后自动缩放/缩放
- 14. 强制定向布局NaN附加在D3.js
- 15. d3.js在非svg元素上强制布局
- 16. d3.js:强制布局中的建议节点位置
- 17. D3 v4:更新强制布局
- 18. d3.js包布局圈重叠
- 19. Cytoscape.js布局边缘长度
- 20. d3.js节点和边缘格式
- 21. D3 JS强制布局:使用链接参数设置节点半径
- 22. 网络边缘长度x
- 23. 如何链接D3.js强制布局中的json数据的额外属性?
- 24. python:在生物网络上使用networkX进行定向边缘
- 25. 如何在边缘加权网络/图中进行社区检测?
- 26. d3网络图窗口边界
- 27. 输出BGL边缘权重
- 28. 了解EUC_2D边缘权重
- 29. 如何在UIWebView完成加载时强制重新布局UITableViewCell?
- 30. 网络多路正交图中d3.js
这将是很好,你告诉社区解决方案是否有效。也许,别人有像你一样的问题... – Guybrush