更新 D3v4 中的力布局

Posted

技术标签:

【中文标题】更新 D3v4 中的力布局【英文标题】:Updating Force Layouts in D3v4 【发布时间】:2017-03-27 23:06:31 【问题描述】:

我正在研究 D3v4 中的强制布局,它需要随着时间的推移更新其节点。我关注了 Adding new nodes to Force-directed layout (D3v2) 和 mbostock 的 block (D3v3),但我不太确定如何在 D3v4 中实现相同的效果。到目前为止,这是我所得到的:

http://bl.ocks.org/danielcompton/2189f9571e306f3084e5c2a913002eaf

我看到的问题是,当我第二次将相同的数据添加到强制布局时,它会重置节点位置,并且似乎用更少的 alpha 重置它们,所以它们不会完全展开,直到它们被点击。 更新节点和链接时是否还需要设置 alpha?

我见过D3 v4: Update force layout,这是一个不同(但相关)的问题。

有人对如何在 D3 v4 中实现这一点有任何提示吗?

【问题讨论】:

【参考方案1】:

添加数据后,您可以使用simulation.alpha(1).restart() 重新启动仿真布局。

【讨论】:

【参考方案2】:

您处理它的方式似乎是从低 alpha 值开始的。如果我只是在 handleGraph 内使用 .alpha(1) 重置 alpha 值,它就可以解决我的问题:

simulation
  .nodes(graph.nodes)
  .on("tick", ticked)
  .alpha(1);

【讨论】:

以上是关于更新 D3v4 中的力布局的主要内容,如果未能解决你的问题,请参考以下文章

修复 D3 强制定向布局中的节点位置

D3.js使用过程中的常见问题(D3版本D3V4)

VREP中的力触觉设备接口(CHAI3D)

为啥我的更新函数会创建一个全新的力导向图?

要专注于目标

自动更新自动布局中的框架[关闭]