d3 forceCollide和forceManyBody不能一起使用

时间:2018-10-03 15:10:42

标签: javascript d3.js

我正在将D3用于一个项目。主图是一个有力有向图,在这里我使用forceManyBody()和forceLink()创建FDG。

但是节点重叠。为了防止这种情况,我尝试添加forceCollide()。但是,节点仍然发生冲突。我试过更改forceCollide()的强度(半径),并基本上使用它。它不会引发任何错误,但也不起作用。

 simulation = d3.forceSimulation()
.nodes(graph.nodes)
.force('link', d3.forceLink().id(d => d.node_id))
.force('collision', d3.forceCollide().strength(0.2).radius(function(d) { return d.r + 0.5}).iterations(5))
.force('charge', d3.forceManyBody().strength(-20))
.force('center', d3.forceCenter(width/2, height/2))
.on('tick', ticked);

编辑:不管是否有forceCollide()行,其他所有内容都可以正常工作。但是以某种方式我无法防止碰撞。我愿意不使用forceCollide()。

D3版本

<script src="https://d3js.org/d3.v4.min.js"></script>

0 个答案:

没有答案