2015-02-06 8 views
8

Ich mache einige Graph-Theorie in Python mit dem Paket NetworkX. Ich möchte , um die Gewichte der Kanten meines Graphen der Plotausgabe hinzuzufügen. Wie kann ich das machen?Add Kantengewichte zu plotten Ausgabe in NetzwerkX

Zum Beispiel Wie würde ich den folgenden Code ändern, um die gewünschte Ausgabe zu bekommen?

import networkx as nx 
import matplotlib.pyplot as plt 

G=nx.Graph() 
i=1 
G.add_node(i,pos=(i,i)) 
G.add_node(2,pos=(2,2)) 
G.add_node(3,pos=(1,0)) 
G.add_edge(1,2,weight=0.5) 
G.add_edge(1,3,weight=9.8) 
pos=nx.get_node_attributes(G,'pos') 
nx.draw(G,pos) 
plt.savefig("path.png") 

würde ich 0,5 und 9,8 wie an den Rändern erscheinen, auf die sie in der Grafik beziehen.

Antwort

10

Sie werden nx.draw_networkx_edge_labels() nennen müssen, die es Ihnen erlaubt, ... NetworkX Etiketten zu zeichnen :)

EDIT: Voll modifizierte Quelle

#!/usr/bin/python 
import networkx as nx 
import matplotlib.pyplot as plt 

G=nx.Graph() 
i=1 
G.add_node(i,pos=(i,i)) 
G.add_node(2,pos=(2,2)) 
G.add_node(3,pos=(1,0)) 
G.add_edge(1,2,weight=0.5) 
G.add_edge(1,3,weight=9.8) 
pos=nx.get_node_attributes(G,'pos') 
nx.draw(G,pos) 
labels = nx.get_edge_attributes(G,'weight') 
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels) 
plt.savefig(<wherever>) 
+0

@ Joel: hinzugefügt volle Quelle; Ich verlinkte nicht nur mit Docs, ich schlug tatsächlich eine Methode vor :) –

+0

@Joel: Oh, das wusste ich nicht :) –

+0

Ich ging voran und legte diesen Schnitt ein. Ich denke, der Code ist ungefähr so ​​sauber wie es jetzt geht. Ich bin mir nicht sicher, warum ich früher einen Fehler hatte (in der Tat läuft der Code, von dem ich dachte, dass ich mir jetzt einen Fehler mache, sauber ab ...). – Joel