d3.js强制布局是否允许动态linkDistance?

ric*_*sso 14 d3.js force-layout

我正在使用强制布局来表示定向的未加权网络.我的灵感来自以下示例:http://bl.ocks.org/mbostock/1153292

在此输入图像描述

我的问题是,在我的情况下,节点之间有更多的链接,我觉得提供一个固定的linkDistance,总是相同的,是我的布局的一个非常大的约束.

是否可以设置动态linkDistance,以便链接长度增加,如果它有助于减少图形内部的链接交叉?

Lar*_*off 14

文档:

force.linkDistance([距离])

如果指定了距离,则将链接节点之间的目标距离设置为指定值.如果未指定距离,则返回布局的当前链接距离,默认为20.如果距离是常量,则所有链接的距离都相同.否则,如果distance是一个函数,则为每个链接(按顺序)计算函数,传递链接及其索引,并将此上下文作为强制布局; 然后使用函数的返回值来设置每个链接的距离.无论何时布局开始,都会评估该函数.通常,距离以像素为单位指定; 但是,单位相对于布局的大小是任意的.

请注意,在布局运行时仍会调整链接距离.您可能还会发现设置linkStrength()有用.

  • 强度是应用于距离的乘数. (2认同)
  • 不,这有点重.你将不得不玩这些值来看看哪些对你有用. (2认同)

Gom*_*mes 7

只需两步:

步骤1:在主json中添加一个参数,如下所示:

{source:"Microsoft",target:"Amazon",type:"licensing",value:60},{source:"Microsoft",target:"HTC",type:"licensing",value:60},{source :"三星",目标:"Apple",输入:"suit",价值:60},

第2步:将linkdistance更新为accept方法.

.linkDistance(function(d) { return  d.value; }) 
Run Code Online (Sandbox Code Playgroud)