2010-10-20 9 views
11

Im Verwendung von NetworkX für die Visualisierung. Ich sehe, wenn ich die Funktion draw_networkx_edge_labels Ich kann die Etiketten für Kanten abrufen.NetworkX Knotenattribut Zeichnung

Ich möchte das Attribut auf Knoten (anstelle der Bezeichnung) .. versuchen Sie alles fast. immer noch fest. Wenn ich 5 Attribute pro Knoten habe, kann ich trotzdem ein bestimmtes Attribut auf jedem Knoten drucken? Zum Beispiel, wenn ein Auto Knoten Attribute hat: Größe, Preis, Firma, .. Ich möchte die Größe des Autos auf jedem Knoten drucken?

Ich weiß nicht, ob dies auf Grafik ausgeben kann.

Antwort

17

Sie können es tun, indem Sie die Bezeichnungen angeben = Schlüsselwort - es ist ein bisschen ungeschickt. z.B:

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

Eine etwas einfacher Ersatz für Zeile 7: 'labels = nx.get_node_attributes (G, 'size')' Diese Funktion gibt einen dict wie die in Zeile 7 erzeugt ein. – TrentP