2017-06-29 33 views
1

我試圖繪製使用networkX圖形分配節點位置‘節點類型’問題「節點‘0’沒有位置 - 在networkX/Python的

我已經定義的精確位置:

pos={0:(40,100), 1:(50,100), 2:(45,80), 3:(55,80), 4:(50,60), 5:(50,40), 6:(50,20)} 

我然後分離的節點爲兩個 '類型',因此讓我們說,節點0,2,4,6是'鍵入'和1,3,5是'b類' 。我使用append函數將它們追加到兩個不同的節點列表中。現在我有兩個不同的節點列表:TYPE_ATYPE_B,可以繪製它們 - 例如使用:

nx.draw_networkx_nodes(G, pos, nodelist=type_a, node_size=2000,node_shape="s", node_color='g', labels=exploit_node_labels, with_labels=True, alpha=1) 

我的問題是能夠在我分配節點的時間分配節點位置的節點。如何在將節點附加到兩個不同列表的位置處分配'pos'?

這種方法給我一個錯誤如下:

nx.draw_networkx_nodes(G, pos, nodelist=type_a, node_size=2000,node_shape="s", node_color='g', labels=exploit_node_labels, with_labels=True, alpha=1) 
      File "C:\Program Files\Python36\lib\site-packages\networkx\drawing\nx_pylab.py", line 386, in draw_networkx_nodes 
      raise nx.NetworkXError('Node %s has no position.'%e) 

networkx.exception.NetworkXError: Node '0' has no position. 

回答

1

顯然,在圖形中G節點是一串數字,即'0', '1','2' ...而不是整數0,1,2 ......但是,你是使用整數而不是字符串使用pos定義位置。嘗試定義你的位置如下,它應該工作

pos={'0':(40,100), '1':(50,100), '2':(45,80), '3':(55,80), '4':(50,60), '5':(50,40), '6':(50,20)} 
+0

非常感謝你!!!!! –