D3.js使节点出现在中间;反弹”;

D3.js getting nodes to appear in middle without "bounce"

本文关键字:在中间 反弹 js 节点 D3      更新时间:2023-09-26

我有一个使用"Nodes"answers"Lines"的D3设置。当图形第一次出现时,它会随着重力反弹,直到它位于在中间。有人知道一种方法可以让它自动出现在中间而不会产生"反弹"的效果吗?

p.S我正在使用部队布局

调用start重置冷却参数alpha;alpha在布局收敛于其解时呈指数衰减,然后停止以避免浪费cpu。启动时没有抖动(除了重合节点,这是避免被零除所必需的)。但是,无论何时,只要存在冲突的力和几何约束(链接),都很自然地希望在启动时调整布局。

如果你想避免这种反弹,你要么需要保持图形永久热(比如调用d3.timer(function() { force.resume(); })),要么你需要做其他事情,比如手动调整alpha参数,逐渐而不是瞬间重新加热。

编辑:在2.8.x中,您可以通过在启动时同步运行力布局来完全避免第一次反弹。例如:http://bl.ocks.org/1667139

我以前使用过的另一种策略是,在第一个(例如,50或100个)力刻度上,从零开始逐渐增加每个节点的半径。你可以在one.org数据网站上的Dorling cartograms中看到它的样子(在Protovis中,但在d3中的行为方式相同)。