2015-02-16 16 views
14

NetworkX è potente ma stavo cercando di tracciare un grafico che mostra le etichette dei nodi per impostazione predefinita e sono rimasto sorpreso di quanto sia noioso questo compito apparentemente semplice per qualcuno di nuovo in Networkx. C'è un esempio che mostra come aggiungere etichette alla trama.Tracciare il grafico di retex con le etichette di nodo predefinite sul nome del nodo

https://networkx.github.io/documentation/latest/examples/drawing/labels_and_colors.html

Il problema con questo esempio è che utilizza troppi passaggi e metodi quando tutto voglio fare è semplicemente mostrano etichette che sono stesso come il nome del nodo durante la rappresentazione grafica.

# Add nodes and edges 
G.add_node("Node1") 
G.add_node("Node2") 
G.add_edge("Node1", "Node2") 
nx.draw(G) # Doesn't draw labels. How to make it show labels Node1, Node2 along? 

C'è un modo per rendere nx.draw(G) mostrare le etichette predefinite (Node1, Nodo2 in questo caso) in linea nel grafico?

risposta

26

tl/dr: basta aggiungere with_labels=True alla chiamata nx.draw.

Quindi il motivo principale per la complessità aggiuntiva su that page era che mostra come impostare un sacco di cose diverse come le etichette e dare diversi nodi di colori diversi e fornire un controllo accurato sulle posizioni dei nodi. Sembra si desidera solo il nome che è stato dato quando il nodo è stato creato, e tu sei felice con il colore predefinito e la posizione di default

import networkx as nx 
import pylab as plt 

G=nx.Graph() 
# Add nodes and edges 
G.add_edge("Node1", "Node2") 
nx.draw(G, with_labels = True) 
plt.savefig('labels.png') 

enter image description here

Se si voleva fare qualcosa in modo che il le etichette dei nodi erano diverse, si poteva inviare un dict come argomento. Così, per esempio,

labeldict = {} 
labeldict["Node1"] = "shopkeeper" 
labeldict["Node2"] = "angry man with parrot" 

nx.draw(G,labels=labeldict, with_labels = True) 

enter image description here

+0

Perfetto, che funziona! Il parametro 'with_labels' non è menzionato da nessuna parte in aiuto di nx.draw i.e. >>>' help (nx.draw) 'ma funziona. Grazie! –

+0

Quindi è nella documentazione, ma non direttamente: '** kwds: parole chiave facoltative Vedere networkx.draw_networkx() per una descrizione delle parole chiave facoltative. – Joel

Problemi correlati