D3力基本面?

Vin*_*tDM 1 d3.js force-layout

我正在努力理解 和 的影响,alphaDecay并且velocityDecay试图解释D3的概念alphastrength在 D3 的上下文中我不会感到舒服。从我的经验水平,力模块的源过于短期和甜,我没有找到又一个“D3.force傻瓜”把我加快速度。

从我的测试中,我从未将任何显着的图形行为变化与不同的alphaDecay值相关联,我只看到了velocityDecay极端设置(接近 0 或 1)的影响。link.strength()也还是个谜。

我也真的从来没有真正确定什么时候或为什么我应该打电话simulation.restart()

这一切都导致我无法制定出令人满意的图表的策略。我觉得我总是处于爆炸性或惰性的图表边缘。

我玩弄这个有趣的工具和读取大多数的这个,但它并没有真正去走一走alphalink.strength和其他的东西我已经提到过。

您如何理解这些值以及如何配置它们?

Ian*_*Ian 5

因此,他们所做的具体工作记录在滴答文档中。它是这样说的:

将当前 alpha 增加 (alphaTarget - alpha) × alphaDecay;然后调用每个注册的力,传递新的 alpha;然后将每个节点的速度递减速度 × velocityDecay;最后按速度增加每个节点的位置。

我会这样描述它们:

Α

alpha我认为是系统的温度,它会在一段时间内衰减,我将用它来解释。当温度达到 0 ( alphaTarget) 时,它会自动停止所有物体的移动,因为它假定没有剩余能量。所以模拟停止。

系统具有能量的持续时间取决于 3 件事,即电流alphaalphaTarget我们应该停止的时间以及alphaDecay我们从系统中散失热量的速度。这个值越大,力就会越快停止。

速度

速度是力内单个项目的速度。因此,在每次滴答之后,我们都会得到一个更新,并且速度会按velocityDecay比例降低。所以我把它velocityDecay当作摩擦。摩擦力越大,单个节点停止的速度就越快。

重新开始

通常,您会simulation.restart()取消某些用户操作(删除节点、添加链接等)的支持。