【发布时间】:2023-03-20 07:16:01
【问题描述】:
我有一个使用“节点”和“线”的 D3 设置。当图表第一次出现时,它会随着重力反弹,直到它停留在中间。有谁知道让它自动出现在中间而没有“反弹”效果的方法?
P.S 我正在使用强制布局
【问题讨论】:
标签: javascript d3.js force-layout
我有一个使用“节点”和“线”的 D3 设置。当图表第一次出现时,它会随着重力反弹,直到它停留在中间。有谁知道让它自动出现在中间而没有“反弹”效果的方法?
P.S 我正在使用强制布局
【问题讨论】:
标签: javascript d3.js force-layout
调用start会重置冷却参数alpha;随着布局收敛于其解决方案,alpha 呈指数衰减,然后停止以避免浪费 cpu。开始时没有抖动(除了重合节点,这是避免被零除所必需的)。但是,只要您有冲突的力和几何约束(链接),就很自然地期望布局在开始时进行调整。
如果您想避免这种反弹,您要么需要使图形永久保持热状态(例如通过调用 d3.timer(function() { force.resume(); })),要么您需要执行其他操作,例如手动调整 alpha 参数以逐渐重新加热而不是瞬间加热.
编辑:在 2.8.x 中,您可以通过在启动时同步运行强制布局来完全避免第一次反弹。例如:http://bl.ocks.org/1667139
【讨论】:
我之前使用的另一种策略是在第一个(例如 50 或 100 个力滴答声)上逐渐增加每个节点的半径。您可以在one.org data site 上的 Dorling 制图中看到它的样子(在 Protovis 中,但在 d3 中的行为方式相同)。
【讨论】: