山内のサイト

python用のigraphのインストール

igraphの説明(R): R+igraph (Kazuhiro Takemoto) まとまっているページ

python-igraphのインストール

pip install python-igraph

注意: パッケージ名 igraphやjgraphは違うものらしい
注意: インストールに結構時間がかかった(待たされた)

ipythonのイントロ

igraphでの描画にはcairo, pycairoが必要

まずCairoをダウンロード。実はダウンロード済みで、要らなかった。

yum install cairo-devel
パッケージ cairo-devel-1.14.2-1.el7.x86_64 はインストール済みか最新バージョンです

次に、pycairoをインストール。pipではバージョンエラーが出てインストールできなかった。 cairo本家のpycairoページが指している Get Repository(github)から、パッケージ全体をダウンロードして、

python setup.py install

にてインストール。これでigraphをimportすればOK。

import pycairo

はOKになる。

>>> from igraph import *
>>> g = Graph()
>>> g.add_vertices(3)
>>> g.add_edges([(0,1),(1,2)])
>>> g.add_edges([(2,0)])
>>> print(g)
IGRAPH U--- 3 3 --
+ edges:
0--1 1--2 0--2
>>> g.add_vertices(3)
>>> g.add_edges([(2,3),(3,4),(4,5),(5,3)])
>>> plot(g)

2017-06-29_igraph_test.png

もっとやってみる

# -*- coding: utf-8 -*-
from igraph import *

vertices = ["Yamada", "Tanaka", "Suzuki", "Sato", "Ito", "Obokata"]
edges = [(0,1),(1,3),(1,4),(1,5),(2,5),(3,5),(4,3),(0,5)]
g = Graph(vertex_attrs={"label": vertices}, edges=edges, directed=True)
plot(g)

2017-06-29_igraph-test2.png

グラフのスタイルを変える

いろいろ方法があるようだ。

まずは、上記で、

plot(g, vertex_size = 60, vertex_color='white')

のように指定できる。

たくさん指定したいときはplotの引数にパラメタリストを与えてしまうのがよさそう。

# -*- coding: utf-8 -*-
from igraph import *

vertices = ["山田", "田中", "鈴木", "佐藤", "伊藤", "小保方"]
edges = [(0,1),(1,3),(1,4),(1,5),(2,5),(3,5),(4,3),(0,5)]
g = Graph(vertex_attrs={"label": vertices}, edges=edges, directed=True)

visual_style = {}    # 辞書型で作る
visual_style['vertex_size'] = 60   # 標準で描くのは20位? 字を入れるには小さい
visual_style['vertex_color'] = 'white' # 字を入れるなら白っぽい方がいいようだ
# plot(g)
plot(g, **visual_style)   # <-- ここへvisual_styleを追加

2017-06-29_igraph-style.png

その他試していないが、tutorialには以下のリストがある

>>> visual_style["vertex_size"] = 20
>>> visual_style["vertex_color"] = [color_dict[gender] for gender in  g.vs["gender"]]
>>> visual_style["vertex_label"] = g.vs["name"]
>>> visual_style["edge_width"] = [1 + 2 * int(is_formal) for is_formal in g.es["is_formal"]]
>>> visual_style["layout"] = layout
>>> visual_style["bbox"] = (300, 300)
>>> visual_style["margin"] = 20

あと、layoutを変更するのもアリらしい。

plot( g, layout = g.layout_circle() )
又は
plot( g, layout = g.layout("circle") )

2017-06-29_igraph-circle.png

グラフの分析


添付ファイル: file2017-06-29_igraph-circle.png 18件 [詳細] file2017-06-29_igraph-style.png 20件 [詳細] file2017-06-29_igraph-test2.png 33件 [詳細] file2017-06-29_igraph_test.png 24件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-06-29 (木) 17:24:52 (142d)