D3.js中强制定向布局中的LinkDistance和LinkStrength有何关系?我以为是,如果我错了,请纠正我。

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

最佳答案

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

如果您查看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

关于javascript - D3.js强制布局中LinkDistance和LinkStrength之间的关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17355128/

10-11 05:10