python networkxでグラフ書く
pythonでグラフ書くのが楽過ぎたので感動ついでに。
(参考:Amazon.co.jp: IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集: Cyrille Rossant, 菊池 彰: 本)
例:10頂点の完全グラフ
import numpy as np import networkx as nx import matplotlib.pyplot as plt n = 10 adj = [(i,j%n) for i in range(n) for j in range(i+1,n)] #辺のリスト g = nx.Graph(adj) nx.draw_circular(g) #頂点をサイクル上に並べてグラフを描画 plt.savefig("compGraph.png") #描画したやつを保存
んでできたのがこれ。
グラフ描画がたったこれだけで済むなんて!!!!
学生のころは
・graphvizインストールして
・C言語で隣接行列書いて
・隣接行列からgraphviz用グラフ描画言語を作って
・コマンドプロンプトで専用コマンド叩いて完成
というスーパーめんどくさい方法とっていたのでかなり感動した。
ランダムグラフ描画も簡単。(参考:自分のためのnetworkXメモ - 何かを書き留める何か)
#n=20, p=0.3 rg = nx.fast_gnp_random_graph(20, 0.3) nx.draw_circular(rg)
やりたいことに対して、最も効率的な手段を選ぶって大事だなって思いました。