2014-04-23 70 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