2013-02-02 123 views
10

我想繪製一個網絡,我希望它是未標記的,但對於cretin節點例外。Networkx的特定節點標記

我在看什麼是這樣的:

nx.draw(G, pos=pos, node_color='b', node_size=8, with_labels=False) 

for hub in hubs: 
    nx.draw_networkx_nodes(G, pos, nodelist=[hub[0]], node_color='r') 

目前的代碼改變了輪轂列表中的節點的大小和顏色。我也想標註它們。

我試圖添加標籤參數並將其值設置爲集線器名稱。但它沒有工作。

感謝

+2

如果'hubs'項目已經在圖'G'你應該叫'nx.draw_networkx'與'labels'設置有按鍵作爲樞紐節點和值字典標籤/串。 – Bula

+0

其實你說的解決了這個問題:)謝謝 – amaatouq

回答

16

從布拉的評論的解決方案是很容易

的竅門是在一本字典,其中的關鍵是節點的名稱和值是您所需要的標籤設置標籤。因此,僅標註了集線器,該代碼將與此類似:

labels = {}  
for node in G.nodes(): 
    if node in hubs: 
     #set the node name as the key and the label as its value 
     labels[node] = node 
#set the argument 'with labels' to False so you have unlabeled graph 
nx.draw(G, with_labels=False) 
#Now only add labels to the nodes you require (the hubs in my case) 
nx.draw_networkx_labels(G,pos,labels,font_size=16,font_color='r') 

我得到了我想要的是以下幾點: enter image description here

我希望這將有助於其他Python/networkx新手喜歡我自己:)

再次感謝布拉

+0

很高興它有幫助,這個信息是在[documentation]中(http://networkx.github.com/documentation/latest/reference/generated/networkx.drawing.nx_pylab.draw_networkx .html#networkx.drawing.nx_pylab.draw_networkx),但表達式不清楚,所以爲了安全起見,您可以嘗試或查看'draw_networkx' [source line](https://github.com/networkx/networkx /blob/master/networkx/drawing/nx_pylab.py#L262)它調用'draw_networkx_labels'和[there](https://github.com/networkx/networkx/blob/master/networkx/drawing/nx_pylab.py# L698)它遍歷字典制作標籤。 – Bula