2015-12-04 53 views
0

我試圖如此模擬我的強制網絡與NetworkX來獲取XY位置。NetworkX導出一個強制網絡到XY座標

我有我的環境中的每個節點之間的距離。

我想在XY中有固定的位置。 有沒有辦法從可視化中檢索我的節點數據?

舉個簡單的例子, 我有我的網絡這樣的:

G = nx.Graph() 

G.add_edge("B", "C", len="3.0", color="green", width="2.0") 
G.add_edge("C", "D", len="3.0", color="green", width="2.0") 
G.add_edge("D", "B", len="5.0", color="green", width="2.0") 

nx.draw(G,vmin=0,vmax=1) 
plt.show() 

這給我說:

enter image description here

所以我想有我XY位置我所有的點。 如果你知道一個方法來實現這一點,用這個或另一種方法,不要猶豫。

我真的需要幫助。

謝謝!

回答

0

如果您只是想在當前實現Networkx力指向佈局的位置,你可以簡單地調用pos = nx.spring_layout(G)

當您使用功能draw,如果節點的位置並不像第二個參數給出的節點使用彈簧佈局算法自動佈局(強制定向)。

See

pos (dictionary, optional) – A dictionary with nodes as keys and positions as values. 
If not specified a spring layout positioning will be computed. 
See networkx.layout for functions that compute node positions. 

的代碼應該是這樣的:

pos = nx.spring_layout(G) 
# do smth 
nx.draw(G, pos) 
+0

謝謝您的回答。 但這並不是我想要的,因爲當我用相同的「姿勢」重新計算另一個圖時,它不會給我與我的網絡相同的安排。當我比較陣列中的XY位置和圖形中的位置時,它似乎不對應...... 我只想在模擬之後在網絡中的每個節點的位置。你有一個想法,我怎麼能得到這個? – HugoLasticot

+0

對不起,但我不明白你想要什麼。如果我重新計算其他圖表,你的意思是什麼?如果你自己做模擬,你有節點的座標不是? – Kikohs

+0

不用擔心。 我把POS作爲我的節點位置的一個字典。但是,當我比較一個節點的位置和圖形表示(plt.show())上的同一節點位置時。似乎圖上一個節點的XY座標與字典上的XY座標不同。 – HugoLasticot