igraph のネットワークレイアウト
igraph パッケージには、ネットワークを可視化するためのレイアウトアルゴリズムがいくつも組み込まれています。ネットワークの規模によって、構造を伝えるのに適したレイアウトは異なります。理想的には、ネットワーク内でエッジ同士の交差を最小限にできるレイアウトが最適です。この演習では、数あるデフォルトのレイアウトアルゴリズムの一部を試してみます。各プロットのコードを再実行すると、同じレイアウトタイプでもわずかに異なる図が得られます。何度か実行して、ネットワークに最も見やすい可視化を見つけてみましょう。
この演習はコースの一部です
Rで学ぶネットワーク分析
演習の手順
- plot 関数の
layout引数をlayout_in_circle()に変更して、円形のネットワークを作成します。 - plot 関数の
layout引数をlayout_with_fr()に変更して、Fruchterman–Reingold レイアウトのネットワークを作成します。 - 各頂点の (x, y) 座標の行列を与えてレイアウトを指定することもできます。ここでは
layout_as_tree()関数で座標行列mを生成し、plot()のlayout引数にmを渡してプロットします。 - 適切なレイアウトの選択は迷いやすいものです。幸い、
igraphには与えられたグラフオブジェクトに最適なレイアウト関数を選ぼうとするlayout_nicely()があります。この関数を使って行列m1を作成し、これらの座標でネットワークを描画してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
library(igraph)
# Plot the graph object g1 in a circle layout
plot(g1, vertex.label.color = "black", layout = ___(g1))
# Plot the graph object g1 in a Fruchterman-Reingold layout
plot(g1, vertex.label.color = "black", layout = ___(g1))
# Plot the graph object g1 in a Tree layout
m <- ___(g1)
plot(g1, vertex.label.color = "black", layout = m)
# Plot the graph object g1 using igraph's chosen layout
___ <- layout_nicely(___)
plot(___, vertex.label.color = "black", layout = ___)