2015-02-06 14 views
8

Python'da networkx paketini kullanarak bazı grafik teorisi yapıyorum. Grafiğimin kenarlarının ağırlıklarını çizim çıktısına eklemek için olmasını isterim. Bunu nasıl yapabilirim?Ağda çıktı için çıktı çizmek için kenar ağırlıklarını ekleyin

Örneğin İstediğiniz çıktıyı almak için aşağıdaki kodu nasıl değiştiririm?

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

Grafikte başvurdukları kenarlarda 0,5 ve 9,8'in görünmesini istiyorum.

cevap

10
Sen ... networkX kenar etiketleri :)

DÜZENLEMEYİ çizmek izin verecek olan nx.draw_networkx_edge_labels() aramak gerekecek

: Tam modifiye kaynak

#!/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: katma tam kaynağı; Sadece dokümanlar ile bağlantı kurmuyordum, aslında bir yöntem önerdim :) –

+0

@Joel: Oh, bunu bilmedim :) –

+0

Devam ettim ve bu düzenlemeyi yaptım. Kodun temiz olduğunu düşünüyorum. şimdi olduğu gibi. Neden daha önce bir hata yaptığımı bilmiyorum (aslında bana bir hata veriyordum kod şimdi temiz çalışır ...). – Joel