2010-10-20 17 views
11

Im usando networkx per la visualizzazione. Vedo quando uso la funzione draw_networkx_edge_labels Posso recuperare le etichette per i bordi.Attributo nodo NetworkX disegno

Voglio stampare l'attributo sul nodo (anziché sull'etichetta) .. prova quasi tutto. ancora bloccato. Se ho 5 attributi per nodo, c'è comunque che posso stampare un attributo specifico su ciascun nodo? Ad esempio, se un nodo auto ha attributi: dimensioni, prezzo, azienda, .. Voglio stampare la dimensione della macchina su ogni nodo?

Non so se può produrre questo grafico.

risposta

17

È possibile farlo specificando le parole chiave label = - è un po 'goffo. es:

In [1]: import pylab 

In [2]: import networkx as nx 

In [3]: G=nx.Graph() 

In [4]: G.add_node('Golf',size='small') 

In [5]: G.add_node('Hummer',size='huge') 

In [6]: G.add_edge('Golf','Hummer') 

In [7]: labels=dict((n,d['size']) for n,d in G.nodes(data=True)) 

In [8]: labels 
Out[8]: {'Golf': 'small', 'Hummer': 'huge'} 

In [9]: nx.draw(G,labels=labels,node_size=1000) 

In [10]: pylab.show() 
+3

Una sostituzione piuttosto più facile per la linea 7: 'labels = nx.get_node_attributes (G, 'formato')' Tale funzione restituisce un dict come quella creata in linea 7. – TrentP

Problemi correlati