d3.js - D3JS强制布局启动的执行顺序,勾选

标签 d3.js force-layout

我正在使用 d3.js。但我无法理解force.tick如何执行(即隐式或显式)。请尝试给出start、tick、end的执行顺序。 这些事件的用途和影响是什么? 当我使用这样的东西时:

force.start();
for (var i = 0; i < n; ++i) force.tick();
force.stop();

它如何生成静态图像?

P.S:这是我第一次提出问题。如有违反请告知。

程序示例:

   var k=0;
   force.on("tick",tick);
   force.start();//now tick will execute until the alpha lowers to the threshold value
   function tick()
   {
    k++;
   }

“k”的最终值取决于 alpha 大于阈值的时间。

现在假设,

var k=0;
force.on("tick",tick);
force.start();//now tick will execute until the alpha lowers to the threshold value
for(var i=0;i<100;i++)
force.tick();
force.stop();
function tick()
{
k++;
}

现在我得到“k”的值为“100”

在第一种情况下,tick() 被隐式调用,但现在当显式调用它时,执行顺序如何更改。

最佳答案

力布局的工作原理如下:

  • .start() 开始模拟。在调用之前,不会发生任何事情。
  • .tick() 将模拟推进一个时间步长。也就是说,计算节点上的力并根据这些力计算节点的位置。
  • .stop() 停止模拟。调用后什么也没有发生。

您发布的代码生成静态布局的方式是模拟运行多个时间步长 (n),然后停止。通常,.stop() 不会被显式调用,因此模拟永远不会真正停止,只是进入一个不再有节点移动的平衡状态。

回顾一下——模拟开始,运行n步然后停止。所有这些都发生在页面呈现之前,因此您看不到任何移动。如果将 n 增加到一个非常大的值,您应该会注意到页面呈现之前存在延迟。

关于d3.js - D3JS强制布局启动的执行顺序,勾选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21748520/

相关文章:

javascript - D3JS强制布局新节点断开现有节点

d3.js - D3 力定向图有条件地设置节点的填充颜色

javascript - SVG 元素的 D3 多行工具提示

javascript - 在 D3 中使用 HTML 作为标签

javascript - 嵌套列表可视化为交互式循环图

javascript - 当值超过最大值和最小值时更改域

javascript - 如何在启用了缩放的 D3.js-SVG 中启用文本选择?

d3.js - D3改变单个节点的电荷

javascript - 在 d3 力布局中保持节点可拖动的同时实现平移

javascript - D3 SVG 路径上的定位箭头