Tech Beans

Web企業で働くエンジニアのBlog


【Pythonでネットワーク可視化】graph-toolのインストール

graph-tool

前回NetworkXを使ってグラフを描画したが、主に使用目的がpythonでのデータの可視化であったので、それに特化したライブラリを探していた。

そこで見つけたのがgraph-tool。graph-toolはデータビジュアライゼーションに特化したライブラリとのことで、早速使ってみる。 今回はインストールと簡単なグラフ描画まで。

インストール for Ubuntu(14.04)

/etc/apt/sources.listに以下の文を追加

deb http://downloads.skewed.de/apt/trusty trusty universe
deb-src http://downloads.skewed.de/apt/trusty trusty universe

他のversionのubuntuを使用している場合はtrustyの部分を変える必要が有ることに注意。今回は(14.04, trusty)なのでtrustyと書き換える。

ところがapt-get updateした段階でpublic keyのエラーがでてしまった。 どうやらpublic keyを登録しないといけないらしい。 公式サイト からpublic keyをダウンロードし登録して解決。

apt-key add [downloadしたpublic keyのパス]
apt-key list # 確認
apt-get update # OK!

keyの登録ができれば、あとは下記コマンドでインストールできるはず。

apt-get install python-graph-tool

インストール for Mac

以前はいろいろ大変だったらしいが、今ではパッケージマネージャ経由でインストールできる。 Macportsだと簡単で

port install py-graph-tool

だけでインストール可能とのこと。

手元の環境ではHomebrewを使っているので、今回はbrewで試してみる。 かなり長いインストール手順が書いてあったが、幸いbrewのフォーミュラがあったのでそれを実行。

$ brew install homebrew/science/graph-tool

インストールはかなり時間がかかるので注意。 コマンドを実行してしばらく放置する。

必要なpythonライブラリのインストール

上記手順でnumpy, matplotlib, scipyを手動でインストールしろ、というメッセージが出たので、pipでインストール

$ pip install numpy scipy matplotlib

そして再度brewコマンドを実行。手元のMacBookPro(2014 2.4GHz)で30分ほどかかった。

>>> import graph_tool
Fatal Python error: PyThreadState_Get: no current thread

失敗orz... 調べたところどうやらbrew でboostが複数バージョンインストールされていることが原因らしいので、boostを再インストール

brew uninstall --force boost
brew install boost

再度graph_toolのインスト-ルを行ったところ、無事終了。

>>> import graph_tool
>>>

インストールが完了した。

簡単なグラフ描画

2ノードの簡単なグラフを作成してみる

import graph_tool as gt
import graph_tool.draw as gtd
g = gt.Graph()
# Add node
v1 = g.add_vertex()
v2 = g.add_vertex()

# Add edge
e = g.add_edge(v1,v2)

# Draw graph
gtd.graph_draw(g,
        vertex_text = g.vertex_index, vertex_font_size=18,
        output_size=(200, 200), output="two-nodes.png"
        )

以下のようなグラフが出力されればOK!

f:id:soy_msk:20150201204730p:plain

参考

graph-tool quick start