9

我已经阅读了很多关于影响力布局的初始动画的内容,但恐怕我还没有理解它。

我已经发现(并且可以实现)这个例子,关于如何有效地“停止”它。

但我的问题是,是否有可能控制它(即影响“强制停止”需要多长时间?)。

从文档来看,似乎alpha是要更改的参数,但它没有任何区别(我尝试了负值、零和正值,没有任何明显的区别)。

这是我正在尝试做的事情的 jsdiddle:yrscc fiddle of what I'm trying to do。

var force = d3.layout.force()
    .nodes(d3.values(datax.nodes))
    .links(datax.links)
    .size([xViewPortArea.Width, xViewPortArea.Height])
    .linkDistance(xGraphParameters.xLinkDistance)
    .charge(xGraphParameters.xCharge)
    .on("tick", tick)
     .alpha(-5)  // HERE 
    .start();

我的问题:

  • 哪个 alpha 值实际上会影响迭代次数?(我认为它的意思是“*如果值为非正数,并且强制布局正在运行,则此方法会在下一个滴答时停止强制布局并在文档中调度“结束”
  • 在这个帖子中,@JohnS 提出了一个功能,显然可以提供帮助。但我不明白应该在哪里称呼它。

PS:另一个很酷的选择是在屏幕上显示图像,然后像这里一样在背景中计算最佳布局。但我放弃了尝试实现它

4

1 回答 1

10

冷却强制布局的一种方法是强制滴答事件:

var k = 0;
while ((force.alpha() > 1e-2) && (k < 150)) {
    force.tick(),
    k = k + 1;
}

阿尔法值衡量力的温度,较低的值表示布局更稳定。认为它稳定的滴答数将取决于节点的数量,我在 50-200 时取得了不错的结果。摩擦系数将有助于稳定力,但布局将不太理想。

于 2013-06-18T20:36:26.337 回答