Previous: mbar.rb 棒グラフの描画 Up: 視覚化コマンド Next: mdtree.rb PMMLによる決定木モデルの描画 VIEW
VIEW : 視覚化コマンド : mgv.rb Graphviz用グラフデータ(.dot)の作成

2.4 mgv.rb Graphviz用グラフデータ(.dot)の作成

CSV形式のグラフデータを、Graphvizが読み込める.dot形式に変換する。

Takeパッケージに含まれるmpolishingコマンド等では、 グラフの入出力にCSV形式を用いている。 グラフを資料に掲載したり、グラフの規模や密度を目視するには、 グラフを視覚化(画像として描画)する必要がある。

.dot形式に変換することで、 Graphviz(http://www.graphviz.org)のほか Gephi(http://www.gephi.org)など グラフ視覚化ソフトウェアに読み込ませることが可能となる。

ただし、Graphvizは比較的小規模なグラフの描画を目的としているため、 頂点数が数百〜数千となると描画時間の面で実用的でなくなる。 大規模グラフの操作・描画にあたってはGephiの使用を推奨する。

2.4.1 書式

mgv.rb [ni=] [nf=] [nv=] [nr=] [-nl] ei= ef= [ev=] [er=] [-el] [-d] [o=] [--help]

ni=

: 頂点集合ファイル名

nf=

: 頂点ID項目名

nv=

: 頂点属性(頂点の大きさ)項目名

nr=

: グラフ描画時のノードの拡大率。1から10までの実数値を指定できる。デフォルト値は3

-nl

: nv=で指定した値をノードの名称に加える

ei=

: 枝集合ファイル名

ef=

: 開始頂点ID項目名,終了頂点ID項目名

ev=

: 枝属性(枝の太さ)項目名

er=

: グラフ描画時のエッジの拡大率。1から20までの実数値を指定できる。デフォルト値は10

-el

: ev=で指定した値をエッジの横に表示する

-d

: 有向グラフとみなすとき指定する

o=

: 出力ファイル名(.dotファイル)

--help

: ヘルプの表示

入力するグラフデータは、ei=パラメータで指定する枝集合のCSVのみでかまわない。 頂点にも属性(大きさ)を与えたい場合は、ni=パラメータを用いて 頂点集合のCSVを指定することができる。

CSV形式のグラフデータ例

1行が1本の枝を表し、枝は開始頂点と終了頂点の2項目で表されている。

node1,node2
A,B
B,C
C,A
C,D
E,D

.dot形式のグラフデータ例

頂点に関する情報と、枝に関する情報からなる。

digraph G { 
  edge [dir=none]

    n0 [label="A" height=0.5 width=0.75] 
n1 [label="B" height=0.5 width=0.75] 
n2 [label="C" height=0.5 width=0.75] 
n3 [label="D" height=0.5 width=0.75] 
n4 [label="E" height=0.5 width=0.75] 


    n0 -> n1 [style="setlinewidth(1.0)"]
n1 -> n2 [style="setlinewidth(1.0)"]
n2 -> n0 [style="setlinewidth(1.0)"]
n2 -> n3 [style="setlinewidth(1.0)"]
n4 -> n3 [style="setlinewidth(1.0)"]

}

Graphvizによる描画例

GraphvizのGUIから対話的に読み込むことができるほか、 Graphvizと一緒にインストールされるdotコマンドを使用して 画像ファイル(.pngファイル)に直接変換することもできる。 視覚化したグラフをFigure 2.5に示す。

$ dot -Tpng rsl1.dot > rsl1.png
$ open rsl1.png

\includegraphics[scale=0.5]{figure/mgv0.eps}
Table 2.5: Graphvizによる描画例


2.4.2 利用例

例1: 基本例

開始頂点と終了頂点からなる枝集合ファイルのみを与える。

$ more edge1.csv
node1,node2
A,B
B,C
C,A
C,D
E,D
$ mgv.rb ei=edge1.csv ef=node1,node2 o=rsl1.dot

\includegraphics[scale=0.5]{figure/mgv1.eps}

例2: 枝に属性(太さ)を指定する例

ev=パラメータでval項目を属性(太さ)として指定している。 同時に-elオプションを付けることで、属性値もグラフに描画される。

$ more edge2.csv
node1,node2,val
A,B,10
B,C,20
C,A,30
C,D,40
E,D,20
$ mgv.rb ei=edge2.csv ef=node1,node2 ev=val -el o=rsl2.dot

\includegraphics[scale=0.5]{figure/mgv2.eps}

例3: 頂点に属性(大きさ)を指定する例

ni=パラメータで頂点集合ファイルを指定する。 nv=パラメータで、val項目を属性(大きさ)として指定している。

$ more node1.csv
node,val
A,10
B,15
C,8
D,5
E,20
$ more edge1.csv
node1,node2
A,B
B,C
C,A
C,D
E,D
$ mgv.rb ei=edge1.csv ef=node1,node2 ni=node1.csv nf=node nv=val o=rsl3.dot

\includegraphics[scale=0.3]{figure/mgv3.eps}

例4: 頂点に属性(大きさ)と拡大率を指定する例

nr=パラメータで、ノードの拡大率を指定している。

$ more node1.csv
node,val
A,10
B,15
C,8
D,5
E,20
$ more edge1.csv
node1,node2
A,B
B,C
C,A
C,D
E,D
$ mgv.rb ei=edge1.csv ef=node1,node2 ni=node1.csv nf=node nv=val nr=5 o=rsl4.dot

\includegraphics[scale=0.3]{figure/mgv4.eps}

Previous: mbar.rb 棒グラフの描画 Up: 視覚化コマンド Next: mdtree.rb PMMLによる決定木モデルの描画 VIEW