2

基于 Michael Bostock 的“分子”示例,可在此 url 获得:http: //bl.ocks.org/mbostock/3037015

我正在尝试使用多个值设置链接的大小。为此,我禁用了“重力”,在“电荷”中放置了一个重要的负值,并将第一个节点固定在窗口的中心。

var force = d3.layout.force()
    .size([width, height])
    .charge(-800)
    .friction(0.45)
    .linkStrength(1)
    .gravity(0)
    .linkDistance(function(d) { 
        return radius(d.target.size * 10);
     });

我的问题是 ( 如下图所示) 有时链接的大小是不同的,特别是对于定义了一点价值的链接。

有人知道我的问题的一个好的解决方案吗?

你可以在这里看到我的代码:http: //jsfiddle.net/awPn3/

4

2 回答 2

3

力布局的一个特点是链接的长度是可变的——关键是节点是自动布局的,你不必担心。您可以实施检查以确保距离始终是您想要的距离,但这将非常困难。

linkDistance您已经使用的功能是(弱)强制执行此类约束的唯一直接方法。如果这还不够,那么就没有简单的方法可以减轻它。您唯一的选择是在模拟的每个滴答声中执行我上面提到的检查。

于 2013-04-25T14:03:11.347 回答
0

我想当你修改你使用的函数时它已经有点帮助了,同时也考虑了两端对象的大小。让解决方案针对设置两个对象之间的“可见”距离进行优化:例如,沿着 (d.source.size+d.target.size) + desired_distance 的线

于 2014-01-25T12:45:41.860 回答