2010-10-20 29 views
11

Uso de networkx para la visualización. Veo cuando uso la función draw_networkx_edge_labels Puedo recuperar las etiquetas de los bordes.Atributo de nodo de NetworkX que dibuja

Quiero imprimir el atributo en el nodo (en lugar de la etiqueta) .. intente todo casi. todavía estancado Si tengo 5 atributos por nodo, ¿de todos modos puedo imprimir un atributo específico en cada nodo? Por ejemplo, si un nodo de automóvil tiene atributos: tamaño, precio, compañía, ... ¿Quiero imprimir el tamaño del automóvil en cada nodo?

No sé si puede dar salida a esto en el gráfico.

Respuesta

17

Puede hacerlo especificando las etiquetas = palabra clave - es un poco torpe. por ejemplo:

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

Un reemplazo algo más fácil para la línea 7: 'etiquetas = nx.get_node_attributes (G, 'tamaño')' Esa función devuelve un dict como la creada en la línea 7. – TrentP

Cuestiones relacionadas