D3力导向图中的动态链接距离

9
我已经实现了d3的力导向布局。但是对我来说问题在于布局没有充分铺满整个屏幕,如下图所示:

enter image description here

我希望节点能够根据动态链接距离在屏幕上均匀分布,因为左右两侧存在大量空白。我尝试使用以下代码随机化链接距离:
d3.layout.force()
    .charge(-800)
    .linkDistance(function(d){
        return (Math.random() * (400 - 200) + 1);
    })
    .size([w, h]);

这会增加连接距离,但也会在垂直方向上增加。我甚至尝试了设置linkStrength()属性,但它对我没有用。如何使此布局仅在水平方向上扩展到整个区域?我们是否可以定义链接距离以适应我的页面矩形区域?

1个回答

3
我看到的一个解决方案是使用这个边界框示例来将您的绘图限制在矩形/水平方向上,然后将电荷设置为非常高的级别(目标为-10000,类似于此),以便节点在被您设置的边界停止之前尽可能地分散。然后,您可以根据其位置选择在节点的右侧或左侧替代性地设置文本,以免被切割。或者您也可以将文本限定在边界内。

哦,顺便说一下,和弦图可以完美地适应您的数据,所以您也可以研究一下(更多信息在这里)。 - Barnabé Monnot
当我像边界框示例中所做的那样绑定绘图并将电荷设置为非常高的值时,节点会沿着边界对齐,在这种情况下,如果节点数量非常多,则图表可能无法读取。是否有任何方法可以根据某些条件在布局运行时为每个节点分配特定的x和y位置,以使其占用整个区域? - Nagesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接