2015-04-16 133 views
0

我正在製作一個大的二分圖,我可以繪製圖形但我不能在圖形中標記節點,我只是簡單地標記nodelistDept節點和它們的名稱,沒有什麼似乎工作,任何幫助將不勝感激,這裏是代碼:在NetworkX中繪製標籤圖

pos=nx.networkx.spring_layout(G) 
#draw nodes 
nx.draw_networkx_nodes(G, pos, nodelist=nodelistDept,node_color = 'r', node_size = 400) 
nx.draw_networkx_nodes(G, pos, nodelist=nodelistSup,node_color= 'w', node_size=50) 
#draw edges 
nx.draw_networkx_edges(G,pos,width=0.5,alpha=0.5) 
nx.draw_networkx_edges(G,pos,edgelist=edgeList) 
#draw the labels 
#labels = nodelistDept 
#nx.draw_networkx_labels(G,pos) 

nx.draw_networkx_labels(G,pos, font_size=12,font_family='sans-serif') 
plt.show() 
+0

如果您給出一個最簡單的工作示例,這更容易使用。我想複製粘貼你的代碼並運行它,但它不知道'nx','plt','nodelistDept','nodelistSup',...所以它應該定義它需要運行的所有東西,那些看不到你所看到的問題的東西應該被刪除。 – Joel

+0

重讀您的問題之後:您是否在問如何標記節點的子集?爲了擴大我之前的評論 - 提供汽車運行的代碼,告訴我們輸出是什麼,以及你想要輸出的結果是非常有用的。 – Joel

回答

0

我認爲錯誤是在別的地方。當我運行代碼的修改版本如下:

import networkx as nx 
import pylab as plt 

G=nx.fast_gnp_random_graph(15,0.1) 
pos = nx.spring_layout(G) 
nx.draw_networkx_nodes(G,pos) 
nx.draw_networkx_edges(G,pos) 
nx.draw_networkx_labels(G,pos) 

plt.savefig('labels.png') 

我得到

enter image description here

所以標籤的存在。


編輯後重讀你的問題,我想你可能會問如何只標記節點的子集。請澄清,如果這是你想要的。

如果你想只標註節點的子集:

subnodelist = [1,2,3,4,5,6,7,8] 
labels = {k:k for k in subnodelist}  
plt.clf() 
nx.draw_networkx_nodes(G,pos) 
nx.draw_networkx_edges(G,pos) 
nx.draw_networkx_labels(G,pos, labels) 
plt.savefig('labels2.png') 

這給

enter image description here

我做labels= {k:k for k in subnodelist}是創建鍵入到每個節點的標籤的字典其名稱。

可以解釋問題的其他東西是使用show

當我在ipython的macbook上運行plt.show()時,它無法顯示標籤,但是這是因爲渲染有一些問題 - 我得到了一個我從來沒有嘗試理清的長錯誤信息。當我保存這個數字的時候沒問題。在錯誤的更多細節在這裏:pylab/networkx; no node labels displayed after update

+0

您好joel,非常感謝您的建議,我試圖標記所有節點,但我認爲發生的事情是標籤沒有顯示在我使用plt.show()的情節中,但也許它們是如果我保存到圖片文件 – dbmehri

+0

啊 - 是的。我從我的答案的早期版本中刪除。我會把它放回去。至少在我的mac上使用ipython,如果我使用plt.show,我會在渲染中得到一個錯誤,但是plt.savefig很好。 – Joel

+0

我試圖做你的建議,但無濟於事,仍然沒有標籤,我得到一個「糟糕的參數類型的內置操作」錯誤,這是我的代碼: labels = {k:k for node in nodelist} plt.clf() nx。draw_networkx_labels(G,pos,labels) plt.show() – dbmehri

2

我不知道這是否是一個愚蠢的答案,但ü試圖例如:

nx.draw_spectral(G, with_labels=True) ? 

它爲我工作。