2013-02-02 13 views
10

ネットワークを描画したいのですが、私はクレチンノードの例外を除いてラベルを付けたくありません。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') 

現時点でコードがハブリスト内のノードのサイズや色を変更します。私は、現時点で持っている何

はこのようなものです。私はそれらにもラベルを貼りたい。

label引数を追加し、その値をハブ名に設定しようとしました。それはうまくいきませんでした。

おかげ

+2

は' G'あなたは 'としてハブ・ノードと値としてキーを持つ辞書に設定' labels'とnx.draw_networkx'を呼び出す必要がありますラベル/文字列。 – 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初心者に役立つだろう願っています自分:)

hubs`項目がグラフに既にある `場合は、再度、感謝ブラ

+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'と呼ばれます(https://github.com/networkx/networkx/blob/master/networkx/drawing/nx_pylab.py# L698)それは辞書を作っています。 – Bula