igraphパッケージの使い方 2.グラフオブジェクトのプロット

プロット

igraphパッケージにはグラフオブジェクト(igraphクラス)をプロットするためのplot.igraph()関数が用意されている.勿論,使う場合はplot()関数にグラフオブジェクトを渡すだけでいい.

> ## plot.igraph()が用意されている
> g <- graph.tree(15)
> plot.igraph(g)

> ## plot()にigraphクラスのオブジェクトを渡せば呼び出される
> plot(g)


デフォルトではノードの配置は毎回変わる(後述).

レイアウト

デフォルトではプロットの際にノードはランダムに配置される.ノードの配置はplot()のlayout引数にノードの座標を与えることで操作できるが,この座標をアルゴリズムによって決定し出力する関数がいくつか用意されている.これらの関数はlayout.から始まる名前を持っている.

> ## layout.から始まる関数はノードの座標を返す
> layout.reingold.tilford(g)
      [,1] [,2]
 [1,]  0.0    0
 [2,] -2.0    1
 [3,]  2.0    1
 [4,] -3.0    2
 [5,] -1.0    2
 [6,]  1.0    2
 [7,]  3.0    2
 [8,] -3.5    3
 [9,] -2.5    3
[10,] -1.5    3
[11,] -0.5    3
[12,]  0.5    3
[13,]  1.5    3
[14,]  2.5    3
[15,]  3.5    3
> ## これをplotのlayout引数に与える(あるいは座標を直接指定する)ことでその座標にノードを配置できる
> lay <- layout.reingold.tilford(g)
> plot(g, layout=lay)


また,次のように関数名と同名の変数名をlayout引数に渡すこともできる.この方法ではプロットごとに配置が異なる場合がある.

> plot(g, layout=layout.fruchterman.reingold)


参考

外観のコントロール

colorやsize,widthといった特定の名前を持った属性に適当な属性値を与えてノード,エッジに設定することでプロット時の色やサイズなどをコントロールできる.
指定しなければデフォルト値が使用されるものが多いが,一部分だけ指定すると他がNAになるなどして予期せぬ結果を招くことがあるので気を付ける.

> ## エッジのパラメータ例
> E(g)$color <- "grey"                    #色
> E(g)$color[1] <- "red"
> E(g)$width <- 1                         #幅
> E(g)$width[1] <- 3
> E(g)$label <- letters[1:length(E(g))]   #ラベル
> E(g)$curved <- FALSE                    #エッジの曲率(FALSE or 0で直線)
> E(g)$curved[3] <- 0.5                   #正なら時計回り
> E(g)$curved[4] <- -2                    #負なら反時計回り
> ## ノードのパラメータ例
> V(g)$size <- 30                         #サイズ
> V(g)$color <- "skyblue"                 #色
> V(g)$color[1] <- "pink"
> V(g)$shape <- "circle"                  #形状
> V(g)$shape[2] <- "square"
> V(g)$label <- letters[1:length(V(g))]   #ラベル
> V(g)$label.cex <- 1.5                   #ラベルフォントサイズ
> plot(g, layout=lay)


参考