見出し画像

【R言語】grVizで複数グラフを同じアウトプットに並べて作成する

この度「地理空間データの統計解析入門」という本を勉強していて、グラフをRMarkdownで再現しようと思ったら、思ったより沼にハマってしまいまし
たので備忘録です。

grVizはグラフ作成にはとても有効なようです。
https://graphviz.org/doc/info/attrs.html

作りたいグラフ自体は簡単なものです(↓同時自己回帰モデルと条件付き自己回帰モデルのイメージ)

作りたい図

結果的に以下のコードでそれらしきものが出来ました。

Rコード

library(DiagrammeR)
grViz("
digraph G{
 rankdir=RL
   subgraph cluster_1{
  y6 -> y5[arrowsize=0.5]
  y7 -> y5[arrowsize=0.5]
  y8 -> y5[arrowsize=0.5]
  y5[label='y1']
  y6[label='y2']
  y7[label='y3']
  y8[label='y4']

  {rank = same;y6;y7;y8;}

  label='条件付き自己回帰モデル'
  }
  subgraph cluster_0{
  y1 -> {y2, y3, y4}[dir=both][arrowsize=0.5]
  y2 -> y4[dir=both][arrowsize=0.5]
  y3 -> y4[dir=both][arrowsize=0.5]
  y2 -> y3[dir=both][arrowsize=0.5]
  {rank=same;y1;y3;}
  {rank=same;y2;y4;}
  label='同時自己回帰モデル'
  }


}
")

アウトプット

出来上がった図

苦労したポイント


・subgraphごとにレイアウトが変えられない(同時自己回帰モデルはcirco、条件付き自己回帰モデルはdotで作りたかった)
→rank=sameを使ってなんとか再現
・同じ名前を使うには、ラベリングが必要
・クラスタリングでそれぞれのsubgraphを分ける。

最後に

複数グラフを横に並べる方法誰か教えて〜!

この記事が気に入ったらサポートをしてみませんか?