2011-02-25 9 views
0

私はエッジのリストを持っています。グラフの視覚的表現を作成する

(1,2),(1,3),(1,4),(1,5),(1,6),(2,4),(2,7),(3,4),(3,7),(4,5),(4,7),(5,6),(6,7) 

このグラフの画像を取得するにはどうすればよいですか?

これらのリストは9000以上(冗談ではない)なので、自動である必要があります。

答えて

2

Pythonとnetworkxで描画できます。

import networkx 
import pylab 
edges = [(1,2),(1,3),(1,4),(1,5),(1,6),(2,4),(2,7),(3,4),(3,7),(4,5),(4,7),(5,6),(6,7)] 
G = networkx.Graph(data=edges) 
networkx.draw(G) 
pylab.show() 

あなたは、GUIを使用せずに画像としてグラフを保存する方法についてpylabのマニュアルをお読みください。 ast.literal_evalを使用して元のリストを解析できます。たとえば、ファイル内の行に1つのグラフとして保存されている場合、次のようにすることができます。

with open('edges.txt') as f: 
    for line in f: 
     edges = list(ast.literal_eval(line)) 
     # drawing goes here 
+0

(a、b)の辺 'a'が常に' b'よりも上になるようにしたいのですが、どうすればよいですか? –

5

私はこの種のものに常にgraphvizを使用しています。

+2

具体的には、グラフをレイアウトする 'dot'というコマンドがあります。それは本当に使いやすいです。 –

関連する問題