D3.js强制布局中LinkDistance和LinkStrength之间的关系

时间:2013-06-27 23:54:28

标签: javascript d3.js graph-layout force-layout

LinkDistance和LinkStrength如何在D3.js中的强制定向布局中相关?我假设他们是,如果我错了,请纠正我。

我知道linkDistance定义了任何节点对之间的长度,并且在力布局中基本上用作约束。但是linkStrength扮演什么角色? D3.js的API文档将其定义为“[0,1]范围内指定值链接的”强度(刚性)“”刚性“究竟是什么意思?

1 个答案:

答案 0 :(得分:9)

您可以将链接距离视为预期距离,将强度视为每次迭代时希望达到此目标距离的速度。


如果你看一下source code of the force directed layout,你会发现以下一行:

l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;

此算法是一种优化算法,因此,在每次迭代时,您都会修改l。现在的问题是你必须指定修改它的程度。

在基本算法上,您可以使用以下内容来优化距离:

l = ((l = Math.sqrt(l)) - distances[i]) / l;  

但是,您可能希望对每个链接以及每个链接进行更多控制。因此,您可以将alpha属性视为固定参数,将strength属性视为每个链接的参数。

如果您想了解有关所用优化方法的更多信息,建议您查看Gauss-Seidel wikipedia page