2014-02-13 72 views
0

我想將每個節點加載到它的位置,然後啓動將節點從彼此移開以避免重疊的力。目前我正在工作,但節點在強制啓動時全部移動到屏幕上,而不是在啓動時停留在初始位置。有沒有辦法設置初始位置,然後用力開始碰撞檢測?d3js強制節點的起始位置

jsfidle例如:http://jsfiddle.net/2eM8Z/

I tried setting cx and cy before defining force but that did not help 

回答

1

爲了在初始化力佈局節點的位置,你需要設置xy屬性,因爲這是力量佈局使用 - 不cxcy。如果你用你現在的代碼做到這一點,它將不起作用,因爲節點會在初始時重疊,這意味着排斥力太強。如果你把它們放在一個很小的距離開始,它會很好地工作。

完整演示here

+1

通過更改碰撞檢測代碼,即使最初的圓正好重疊,也可以使其工作。只需在計算中檢查零值,並用任意小但非零的值替換它們:http://jsfiddle.net/2eM8Z/2/ – AmeliaBR

+0

此外,您可以設置初始節點位置(在https:// bl .ocks.org/mbostock/7881887)並使用D3的圓圈包裝https://bl.ocks.org/mbostock/7882658給出合理的起始位置以避免分散抖動。 – Bae

相關問題