2015-02-06 10 views
8

Sto facendo un po 'di teoria dei grafi in python usando il pacchetto networkx. Vorrei aggiungere i pesi dei bordi del mio grafico all'output del grafico. Come posso fare questo?Aggiungere gli spessori per tracciare l'output nella retex

Ad esempio Come modifico il seguente codice per ottenere l'output desiderato?

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") 

Vorrei che 0.5 e 9.8 vengano visualizzati sui bordi a cui si riferiscono nel grafico.

risposta

10

Dovrete chiamare nx.draw_networkx_edge_labels(), che vi permetterà di ... disegnare NetworkX etichette bordo :)

EDIT: sorgente modificato pieno

#!/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: aggiunto sorgente completo; Non stavo solo collegando ai documenti, in realtà stavo proponendo un metodo :) –

+0

@Joel: Oh, non lo sapevo :) –

+0

Sono andato avanti e ho inserito quella modifica. Penso che il codice sia pulito come ora. Non sono sicuro del motivo per cui ho avuto un errore prima (in effetti il ​​codice che pensavo di darmi un errore ora funziona in modo pulito ...). – Joel

Problemi correlati