2012-04-22 2 views
1

有向グラフを構築してエッジを購読したい。メモ付きのPythonビルドグラフ

import os 
import scipy as sc 
import pylab 
import networkx 
import matplotlib.pyplot as plt 
from networkx import * 
from numpy import * 

G=networkx.DiGraph() 
R=[('S0','S1'),('S1','S2'),('S1','S7'),('S2','S3'),('S2','S6'),('S3','S4'),('S3','S6'),('S4','S5'),('S5','S6'),('S6','S7'),('S7','S8'),('S7','S5'),('S8','Sk') ] 

G.add_edges_from([ (2,3,) ]) 
G.add_edges_from(R) 
networkx.draw_circular(G) 

plt.show() 
plt.savefig("path.png"); 

これを実行しました。私はグラフを作成しましたが、エッジを購読する方法を考えることはできません。たとえば、S0S1というエッジを"565"などのようにマークしたい場合は、視覚的にもデモストレーションにもなります。 ありがとうございます!

enter image description here

答えて

3

であり

# nodes 
networkx.draw_networkx_nodes(graph, pos, nodelist=[list of the nodes]) 
# edges 
networkx.draw_networkx_edges(graph, pos, edgelist=[list of edges]) 

することができますノード、エッジ、ノードラベル、エッジラベルを別々に描画します。パラメータが異なる描画機能、check the documentationに渡すことができるかについての詳細は

import networkx as nx 
import matplotlib.pyplot as plt 

G=nx.DiGraph() 
R=[('S0','S1'),('S1','S2'),('S1','S7'),('S0','S7')] 

G.add_edges_from(R) 

# Calculate layout and get all positions 
pos = nx.circular_layout(G) 

# Draw everything 
nx.draw_networkx_nodes(G, pos) 
nx.draw_networkx_edges(G, pos) 
nx.draw_networkx_labels(G, pos) 
nx.draw_networkx_edge_labels(G, pos, 
    { 
     ('S0', 'S1'): 'edge1', 
     ('S1', 'S2'): 'edge2', 
     ('S1', 'S7'): 'edge3', 
     ('S0', 'S7'): 'edge4' 
    } 
) 

plt.axis('off') 
plt.savefig("path.png"); 
plt.show() 

:ここで小さな例です。

+0

hm。私はあなたのソリューションについても考えなければなりません。あなたは私よりもうまくやったよ – Tebe

1

よく、私はこれをやりたかった:enter image description here と私はそれをした。エッジをマークしたかったのです。それは単純なようですが、そうではありませんでした。本当に。

フル画像は、それはうれしいですここhttp://s019.radikal.ru/i603/1204/2a/921bc6badfae.png

import os 
import scipy as sc 
import pylab 
import networkx 
import matplotlib.pyplot as plt 
from networkx import * 
from numpy import * 

G=networkx.DiGraph() 
R=[('S0','S1'),('S1','S2'),('S1','S7'),('S2','S3'),('S2','S6'),('S3','S4'),('S3','S6'),('S4','S5'),('S5','S6'),('S6','S7'),('S7','S8'),('S7','S5'),('S8','Sk') ] 
G.add_edges_from(R) 
label={R[1]:'a',R[2]:'b',R[3]:'c'} 
networkx.draw_networkx_edge_labels(G,pos=networkx.graphviz_layout(G),edge_labels=label) 
networkx.draw_graphviz(G) 
plt.show() 
plt.savefig("path.png"); 
関連する問題