1

我有一个使用“节点”和“线”的 D3 设置。当图表第一次出现时,它会随着重力反弹,直到它停留在中间。有谁知道一种让它自动出现在中间而没有“反弹”效果的方法?

PS我正在使用强制布局

4

2 回答 2

5

调用 start 会重置冷却参数 alpha;随着布局收敛于其解决方案,alpha 呈指数衰减,然后停止以避免浪费 cpu。开始时没有抖动(除了重合节点,这是避免被零除所必需的)。然而,只要你有冲突的力量和几何约束(链接),很自然地期望布局在开始时进行调整。

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

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

于 2012-02-25T17:13:56.797 回答
1

我之前使用的另一种策略是在第一个(例如,50 或 100 个力滴答声)上逐渐增加每个节点的半径。您可以在one.org 数据站点上的 Dorling 地图中看到它的样子(在 Protovis 中,但在 d3 中的行为方式相同)。

于 2012-03-02T19:14:32.527 回答