LinkDistance和LinkStrength如何在D3.js中的强制定向布局中相关?我假设他们是,如果我错了,请纠正我。
我知道linkDistance定义了任何节点对之间的长度,并且在力布局中基本上用作约束。但是linkStrength扮演什么角色? D3.js的API文档将其定义为“[0,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。