はじめに
グラフとはノード群とノード間の連結関係を表すエッジ群で構成されるデータ型で、簡単に言えば頂点と頂点を線で結んだデータ構造です。
具体的には以下のようなものです。
本記事ではこのような図をR言語でサクッと作成する手順について解説します。
グラフ構造の可視化
DiagrammeRパッケージをインストール
> install.packages("DiagrammeR") パッケージを ‘C:/Users/XXX/Documents/R/win-library/3.6’ 中にインストールします 依存対象 (dependency) ‘brew’, ‘hms’, ‘clipr’, ‘XML’, ‘Rook’, ....
ライブラリーは以下で読み込めます。
> library("DiagrammeR")
digraphを使用
grViz
関数の
> grViz function (diagram = "", engine = "dot", allow_subst = TRUE, options = NULL, width = NULL, height = NULL) { ....
digraph
を使用して以下のようにコマンド実行すれば冒頭のグラフ図がHTMLで生成されます。
> grViz(" digraph { Step1 -> Step2 -> Step3 Step1 -> Step3 } ")
HTMLの実体は以下です。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <script src="lib/htmlwidgets-1.3/htmlwidgets.js"></script> <script src="lib/viz-0.3/viz.js"></script> <link href="lib/DiagrammeR-styles-0.2/styles.css" rel="stylesheet" /> <script src="lib/grViz-binding-1.0.1/grViz.js"></script> </head> <body style="background-color:white;"> <div id="htmlwidget_container"> <div id="htmlwidget-794ad9dd75782c48952a" style="width:960px;height:500px;" class="grViz html-widget"></div> </div> <script type="application/json" data-for="htmlwidget-794ad9dd75782c48952a">{"x":{"diagram":" digraph { Step1 -> Step2 -> Step3 Step1 -> Step3 } ","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script> <script type="application/htmlwidget-sizing" data-for="htmlwidget-794ad9dd75782c48952a">{"viewer":{"width":450,"height":350,"padding":15,"fill":true},"browser":{"width":960,"height":500,"padding":40,"fill":false}}</script> </body> </html>
構文としては以下のような関係を記載し、並列的にはスペースで区切りながら情報を入れ込みます。
A -> B
おまけとして、色を付けたり横に倒したりしたコマンド実行例は以下です。
> grViz(" digraph { 東京[color='blue' style='filled' fillcolor='pink' ] 横浜[color='blue' style='filled' fillcolor='pink' ] 大船[color='blue' style='filled' fillcolor='pink' ]東京 -> 新橋 -> 品川 -> 川崎 -> 横浜 -> 保土ケ谷 -> 東戸塚 -> 戸塚 -> 大船 品川-> 西大井 -> 新川崎 -> 横浜 graph[rankdir = LR]} ")
終わりに
digraph関数は以下の3つの要素を操作しながらグラフ構造を可視化していきますが
- graph
- node
- edge
本記事ではノードとエッジを一行で書き殴る手法で可視化を行いました。
もっと細かい制御を実施したい場合は「DiagrammeR Docs」を参考ください。
以上、R言語によるグラフ構造の可視化についてでした。