2013-02-02 4 views
10

Ich möchte ein Netzwerk zeichnen und ich möchte es mit Ausnahme für Kretin Knoten nicht markiert werden.NetworkX bestimmte Knoten Kennzeichnung

Was ich im Moment habe, ist so etwas wie diese:

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') 

Der Code zur Zeit ändert die Größe und die Farbe der Knoten in der Liste Hub. Ich würde sie auch gerne beschriften.

Ich habe versucht, das Etikett Argument und auf den Hub Namen seinen Wert hinzuzufügen. aber es hat nicht funktioniert.

Dank

+2

Wenn 'hubs' Artikel bereits im graph sind' G' sollen Sie rufen 'nx.draw_networkx' mit' labels' zu Wörterbuch festgelegt, den Schlüssel als Hub-Netzknoten und Werte haben als Etiketten/Strings. – Bula

+0

Eigentlich, was Sie gesagt löst das Problem :) Danke – amaatouq

Antwort

16

Von Bula Kommentar der Lösung ganz einfach

Der Trick ist, die Etiketten in einem Wörterbuch zu setzen, wo der Schlüssel der Knotenname und der Wert ist die Bezeichnung, die Sie benötigen. Daher nur die Naben zu beschriften, wird der Code so etwas wie diese:

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') 

bekam ich, was ich wollte, welche die folgende ist: enter image description here

Ich hoffe, die anderen Python/NetworkX Neulingen helfen würde, wie ich :)

Wieder Dank Bula

+0

Froh, dass es half, war diese Information in [Dokumentation] (http://networkx.github.com/documentation/latest/reference/generated/networkx.drawing.nx_pylab.draw_networkx .html # networkx.drawing.nx_pylab.draw_networkx), aber der Ausdruck war so nicht klar, auf einer sicheren Seite sein können Sie einfach experimentieren oder schauen Sie in 'draw_networkx' [source line] (https://github.com/networkx/networkx /blob/master/networkx/drawing/nx_pylab.py#L262), wo er ruft 'draw_networkx_labels' und [es] (https://github.com/networkx/networkx/blob/master/networkx/drawing/nx_pylab.py# L698) es iteriert über Wörterbauschilder. – Bula