2014-04-23 33 views
5

我已经为社交网络分析构建了一个强制有向图。防止节点重叠有力图

我现在面临的问题是,节点不断互相重叠,

如何防止在力向图重叠的节点?

这里是我的code with dummy data

而下面是我的力的图像向图这些节点的

enter image description here

enter image description here

如何删除重叠?以及如何保持链接之间的距离至少一段距离,以便链接正确可见?

+2

碰撞检测? http://bl.ocks.org/mbostock/3231298 – Josh

+0

@Josh我已经把'var q = d3.geom.quadt(graph.nodes), i = 0, n = nodes.length; while(++ i analyticalpicasso

+1

你也可以简单地增加你的力布局上的“充电”参数,也许可以使它成为节点类型的一个功能(这样较大的图标就可以推动对方而不是较小的图标)。但是,考虑到你有多少链接,你可能仍然会有重叠的线条。 – AmeliaBR

回答

8

有两种方法可以避免d3力布局中的重叠。

第一种是调整force object的参数,其中最相关的是“充电”参数。带有负值“电荷”值的节点将其他节点推开(与具有正值的节点将其它节点拉近)相比,您可以增加电荷量以产生更大的推动力。

“收费”的默认值是-30,因此您可以在此调整它,直到获得您想要的效果。有没有简单的公式来确定你想要的值,因为它还取决于其他参数和图中链接的数量。

如果出于任何原因调整收费对您不起作用(例如,如果您希望节点彼此靠近 - 彼此不排斥 - 但仍不重叠),则可以手动检查重叠节点,如在评论中由Josh建议的this Mike Bostock example

+0

避免重叠的另一个(不太明显的)是https://bl.ocks.org/mbostock/1062383 – Fuhrmanator