我正在研究D3v4中的力布局,需要随着时间的推移更新其节点。我已经关注Adding new nodes to Force-directed layout(D3v2)和mbostock' block(D3v3),但我不太确定如何在D3v4中实现相同的效果。这是我到目前为止所得到的:
http://bl.ocks.org/danielcompton/2189f9571e306f3084e5c2a913002eaf
我看到的问题是,当我第二次将相同的数据添加到力布局时,它会重置节点的位置,并且似乎也会用较少的alpha重置它们,所以它们不会#39; t完全展开,直到点击它们。我在更新节点和链接时是否也需要设置alpha?
我已经看过D3 v4: Update force layout,这是一个不同(但相关)的问题。
有没有人有关于如何在D3 v4中实现这一目标的任何提示?
答案 0 :(得分:0)
仿真似乎是以你处理它的方式使用低alpha值开始的。如果我只是在.alpha(1)
内使用handleGraph
重置alpha值,那就可以解决这个问题:
simulation
.nodes(graph.nodes)
.on("tick", ticked)
.alpha(1);
答案 1 :(得分:0)
添加数据后,您可以使用simulation.alpha(1).restart()
重新启动模拟布局。