【问题标题】:Relation between LinkDistance and LinkStrength in D3.js Force layoutD3.js强制布局中LinkDistance和LinkStrength的关系
【发布时间】:2013-06-25 15:52:41
【问题描述】:

在 D3.js 的强制导向布局中,LinkDistance 和 LinkStrength 有什么关系?我假设他们是,如果我错了,请纠正我。

我了解,linkDistance 定义了任何一对节点之间的长度,并且本质上用作强制布局中的约束。但是 linkStrength 起什么作用呢? D3.js 的 API 文档将其定义为“指向 [0,1] 范围内指定值的链接的强度(刚性)”“刚性”在这里究竟是什么意思?

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 感谢您的回答!这个 alpha 是否是强制布局 API D3.js 中提供的冷却参数?
    • 没错!我真的建议您查看源代码以了解更多关于它的实际工作原理。
    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2017-03-02
    • 2013-07-15
    • 2014-05-17
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多