d3.js 使用静态力布局在Svelte和d3中创建网络

wz8daaqr  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(134)

我的this network已经足够好用了:当窗口宽度和高度更改时,节点位置会正确更新。
现在我尝试修复它,我的意思是计算一次n刻度,并在计算完n刻度后渲染网络。
我对形象化这个中间步骤没有兴趣:

我只想这样:

现在网络的计算是300个刻度(默认值),假设我只需要100个刻度,我知道节点不会处于最佳位置,但我不在乎,我不想计算更多的刻度,我该怎么做呢?
我尝试评论tick事件并添加.tick(100).stop(),但网络不再是中心。

//.on("tick", simulationUpdate)
  .tick(100)
  .stop()

我想是因为渲染对象还没有更新,但我能这么做吗?
D3文档说明:

模拟.tick([迭代次数])

...此方法不调度事件;只有在创建时自动启动模拟或调用simulation. restart启动模拟时,才由内部定时器调度事件,模拟启动时的自然滴答数为log(alphaMin)/ log(1 - alphaDecay);默认情况下,该值为300....

yws3nbqq

yws3nbqq1#

单个蜱虫的影响很小;所以您可能希望将其增加到大约1000

.tick(1000).stop()

您不需要侦听tick事件,但必须在大小更改时强制执行tick和重新呈现:

$: {
    simulation
      .force("center")
      .x(width / 2)
      .y(height / 2);
    simulation.tick();
    simulationUpdate();
  }

相关问题