SlideShare a Scribd company logo
1 of 13
DiaggrameRと仲良くなった話
ーグラフィカルモデルのためのDiaggrameR速習ー
2017.11.26 Hijiyama.R final
広島大学グローバルキャリアデザインセンター 特別研究員
広島大学大学院 教育学研究科 学習心理学研究室
山根 嵩史
DiagrammeRとは
✔︎ DiagrammeRは,グラフ描画ツールGraphvizを使っ
て,R上で簡単に高度な作図をするパッケージ
(MermaidエンジンやNDFs/EDFsなどの機能も実装されているが今回は割愛)
✔︎ 公式サイトのドキュメントを見てみると夢が広がる
DiagrammeR Docs
(http://rich-iannone.github.io/DiagrammeR/graphviz_and_mermaid.html)
dot言語で色々な作図が可能
(レイアウトは自動!)
ノードの色,形,フォント等の
設定も充実
じゃあこんな図書きたい!
グラフィカルモデルの例
(『実践ベイズモデリング』図15.3)
✔︎ DiagrammeRでグラフィカルモデルが描きたい
グラフィカルモデル (またはプレート表現):
ベイジアンモデリングで使用される,ノードの繋がりで
データの生成過程を視覚的に表現した図
それっぽいコードを書いてみるが…
お,おう...
DiagrammeRと仲良くなりたい
✔︎ DiagrammeRの弱点として,(配置が自動なぶん)
思った通りの図にならないことがある
✔︎ だからといってパワポとかで作図するのも嫌
とくにMacでは
0
1
2
3
4
5
項目 1 項目 2
☞ DiagrammeRと仲良くなりたい
なんで図形とかグラフ要素に
デフォルトで影ついてるの?
BKなの?Sぬの?
DiagrammeRの記法
✔︎ graph[],node[],edge[]の部分に分けて書く
graph[]:配置の方向や背景など,グラフ全体の設定
node[]:配置したいノード名とノードの設定
edge[]:ノード間をつなぐエッジの設定
✔︎ それぞれのノード,エッジの後ろに[]をつければ
個別に設定も可能
配置に関するコマンド
✔︎ ノードの位置を調整したい
edge[]内で{rank = }で設定
{rank = same; a; b} → ノードaとbを同じ階層に配置
{rank = max; a} → ノードaを一番下の階層に配置
{rank = min; a} → ノードaを一番上の階層に配置
✔︎ 図の形状について
階層型 (dot) の他に,円形 (circo) や
ネットワーク型 (neato) なども
graph[]内で“layout = 〜”で設定
デフォルトはdot
✔︎ 横向きの図にしたい
graph[]内で“rankdir = LR”で設定
描画に関するコマンド
✔︎ ギリシャ文字を使いたい
&文字列; で任意のギリシャ文字を描ける
✔︎ 上付き,下付き文字にしたい
@^{文字列}で上付き文字
@_{文字列}で下付き文字
✔︎ イタリックにしたい
graph[]内で“fontname = 〜”で斜体フォントを設定
ラベルの一部だけ斜体にしたい場合には <<I>文字列</I>>
先ほどのコードを修正すると…
fixedsize = true
☞ 各ノードの大きさを固定
fontname = ‘Times-italic’
☞ フォント名と斜体の設定
label = ‘&theta;@^{(h)}’
☞ ギリシャ文字θと
上付き文字の設定
{rank = max; ns; nn}
☞ nsとnnのノードを一番下に配置
するため,{rank = } を使用
できた!
subgraphの設定
✔︎ subgraph cluster{} で
枠付きのサブグラフ作成
✔︎ サブグラフの外と中で
ノードの位置を揃えたい
ときは,graph[]内で
“newrank = true”の設定
が必要
仲良くなれなかった点
✔︎ ︎一部が重なったsubgraphは描けない
例:『実践ベイズモデリング』 図18.9
✔︎ ︎graphvizの仕様上無理っぽい
背景透明色で作った2つのサブグラフを重ね合わせ
るとかどうですか。ダメですか。
参照:https://stackoverflow.com/questions/12680865/how-to-draw-overlapping-clusters-in-graphviz
参考にしたサイトなど
Graphvizとdot言語でグラフを描く方法のまとめ
(https://qiita.com/rubytomato@github/items/51779135bc4b77c8c20d)
Node, Edge and Graph Attributes
(http://www.graphviz.org/doc/info/attrs.html)
DiagrammeR入門 nodeの属性まとめ
(https://qiita.com/kazutan/items/feea8a3d40143f1f7978)
Rでグラフィカルモデルを書こう!
(https://kunisatolab.github.io/how-to-graphicalModel.html)
Plate notation via Graphviz/Rstudio
(http://kosugitti.net/archives/5834)
dot(graphviz)でsubgraph間の位置関係を整える
(http://blog.livedoor.jp/hiroaki8270/archives/17759669.html)

More Related Content

What's hot

社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森Masashi Komori
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法Hidetoshi Matsui
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計Takahiro Kubo
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)Takashi J OZAKI
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38horihorio
 
ブラックボックス最適化とその応用
ブラックボックス最適化とその応用ブラックボックス最適化とその応用
ブラックボックス最適化とその応用gree_tech
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)Yoshitake Takebayashi
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説弘毅 露崎
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにShushi Namba
 
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...Deep Learning JP
 
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
SSII2020SS:  微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​SSII2020SS:  微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​SSII
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)RyuichiKanoh
 
[DL輪読会]ドメイン転移と不変表現に関するサーベイ
[DL輪読会]ドメイン転移と不変表現に関するサーベイ[DL輪読会]ドメイン転移と不変表現に関するサーベイ
[DL輪読会]ドメイン転移と不変表現に関するサーベイDeep Learning JP
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門joisino
 
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo WebminingTakashi J OZAKI
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編Hiroshi Shimizu
 
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII
 

What's hot (20)

社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
 
ブラックボックス最適化とその応用
ブラックボックス最適化とその応用ブラックボックス最適化とその応用
ブラックボックス最適化とその応用
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするために
 
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
 
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
SSII2020SS:  微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​SSII2020SS:  微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
[DL輪読会]ドメイン転移と不変表現に関するサーベイ
[DL輪読会]ドメイン転移と不変表現に関するサーベイ[DL輪読会]ドメイン転移と不変表現に関するサーベイ
[DL輪読会]ドメイン転移と不変表現に関するサーベイ
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
 

More from Takashi Yamane

ベイズモデリングによる第2種信号検出モデルの表現
ベイズモデリングによる第2種信号検出モデルの表現ベイズモデリングによる第2種信号検出モデルの表現
ベイズモデリングによる第2種信号検出モデルの表現Takashi Yamane
 
信号検出理論 (『実践ベイズモデリング』15章)
信号検出理論 (『実践ベイズモデリング』15章)信号検出理論 (『実践ベイズモデリング』15章)
信号検出理論 (『実践ベイズモデリング』15章)Takashi Yamane
 
要因計画データに対するベイズ推定アプローチ
要因計画データに対するベイズ推定アプローチ要因計画データに対するベイズ推定アプローチ
要因計画データに対するベイズ推定アプローチTakashi Yamane
 
PypeRで実験と分析を一本化する
PypeRで実験と分析を一本化するPypeRで実験と分析を一本化する
PypeRで実験と分析を一本化するTakashi Yamane
 
Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Takashi Yamane
 
ガンマ分布 @魁!!広島ベイズ塾
ガンマ分布 @魁!!広島ベイズ塾ガンマ分布 @魁!!広島ベイズ塾
ガンマ分布 @魁!!広島ベイズ塾Takashi Yamane
 
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみたTakashi Yamane
 
MCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナーMCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナーTakashi Yamane
 
第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法Takashi Yamane
 
Anova君を使った分散分析
Anova君を使った分散分析Anova君を使った分散分析
Anova君を使った分散分析Takashi Yamane
 
Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理Takashi Yamane
 

More from Takashi Yamane (14)

ベイズモデリングによる第2種信号検出モデルの表現
ベイズモデリングによる第2種信号検出モデルの表現ベイズモデリングによる第2種信号検出モデルの表現
ベイズモデリングによる第2種信号検出モデルの表現
 
信号検出理論 (『実践ベイズモデリング』15章)
信号検出理論 (『実践ベイズモデリング』15章)信号検出理論 (『実践ベイズモデリング』15章)
信号検出理論 (『実践ベイズモデリング』15章)
 
Osaka.stan#4 chap8
Osaka.stan#4 chap8Osaka.stan#4 chap8
Osaka.stan#4 chap8
 
要因計画データに対するベイズ推定アプローチ
要因計画データに対するベイズ推定アプローチ要因計画データに対するベイズ推定アプローチ
要因計画データに対するベイズ推定アプローチ
 
PypeRで実験と分析を一本化する
PypeRで実験と分析を一本化するPypeRで実験と分析を一本化する
PypeRで実験と分析を一本化する
 
Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)
 
ガンマ分布 @魁!!広島ベイズ塾
ガンマ分布 @魁!!広島ベイズ塾ガンマ分布 @魁!!広島ベイズ塾
ガンマ分布 @魁!!広島ベイズ塾
 
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
 
ANOVA君とanovatan
ANOVA君とanovatanANOVA君とanovatan
ANOVA君とanovatan
 
MCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナーMCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナー
 
第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法
 
Anova君を使った分散分析
Anova君を使った分散分析Anova君を使った分散分析
Anova君を使った分散分析
 
Rstudio事始め
Rstudio事始めRstudio事始め
Rstudio事始め
 
Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理
 

DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー