Rで解析:3要素の関係を示す!三角ダイアグラムをプロット「ggtern」パッケージ


3要素と限定的になりますが、相対的な割合を表現する図として薬学、化学、遺伝学、ゲーム理論、鉱物学などでは三角ダイアグラム(ternary diagrams)が利用されています。有効な三角ダイアグラムですが、Rでの作成方法を日本語で紹介した例が少ないです。

そこで、ggplot2を通じて三角ダイアグラムを手軽にプロットできる「ggtern」パッケージを紹介します。ggplot2の拡張パッケージですのでプロットの装飾コマンドが共通しています。

パッケージバージョンは2.1.0。実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.3で確認しています。


パッケージのインストール

#パッケージのインストール
install.packages("ggtern")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#ライブラリの読み込み
library("ggtern")

###データ例の作成#####
TastData <- data.frame(X = runif(10), Y = runif(10), Z = runif(10)) ######## #三角ダイアグラムを作成:ggternコマンド TerDia <- ggtern(data = TastData, aes(X, Y, Z)) #内容確認 TerDia ###作成した三角ダイアグラムの体裁を調整### #シンボルをプロット TerDiaPoint <- TerDia + geom_point(col = "blue") #内容確認 TerDiaPoint #図を回転:theme_rotateコマンド TerDiaPoint + theme_rotate(90) #外周に矢印を追加:theme_showarrowsコマンド TerDiaPoint + theme_showarrows() #データの分布をグラデーションで表示:stat_density_ternコマンド ggtern(data = TastData, aes(X, Y, Z)) + stat_density_tern(geom = "polygon", aes(fill=..level..), base = "ilr") #シンボルから各辺へ線を引く:geom_Tmark,_Lmark,_Rmark,_crosshair_ternコマンド TmTerDiaPoint <- TerDiaPoint + geom_Tmark(col = "#4b61ba") + labs(title = "geom Tmark") LmTerDiaPoint <- TerDiaPoint + geom_Lmark(col = "#a87963") + labs(title = "geom Lmark") RmTerDiaPoint <- TerDiaPoint + geom_Rmark(col = "#505457") + labs(title = "geom Rmark") CHTerDiaPoint <- TerDiaPoint + geom_crosshair_tern(col = "#deb7a0") + labs(title = "geom chrosshair tern") #内容確認 grid.arrange(TmTerDiaPoint, LmTerDiaPoint, RmTerDiaPoint, CHTerDiaPoint) #各頂点から線を引く:geom_Tisoprop,geom_Lisoprop,geom_Risopropコマンド #位置を指定:valueオプション TpTerDiaPoint <- TerDiaPoint + geom_Tisoprop(col = "#4b61ba", value = c(.4, .6)) + labs(title = "geom Tisoprop") LpTerDiaPoint <- TerDiaPoint + geom_Lisoprop(col = "#a87963", value = c(.4, .6)) + labs(title = "geom Lisoprop") RpTerDiaPoint <- TerDiaPoint + geom_Risoprop(col = "#505457", value = c(.4, .6)) + labs(title = "geom Risoprop") TLRTerDiaPoint <- TerDiaPoint + geom_Tisoprop(col = "#4b61ba", value = c(.4, .6)) + geom_Risoprop(col = "#505457", value = c(.4, .6)) + geom_Lisoprop(col = "#a87963", value = c(.4, .6)) + labs(title = "ALL isoprop") #内容確認 grid.arrange(TpTerDiaPoint, LpTerDiaPoint, RpTerDiaPoint, TLRTerDiaPoint) [/code]


出力例

・ggternコマンド
ggtern

・theme_rotateコマンド
theme_rotate

・theme_showarrowsコマンド
theme_showarrows

・stat_density_ternコマンド
stat_density_tern

・geom_Tmark,_Lmark,_Rmark,_crosshair_ternコマンド
TerDiaPoint

・geom_Tisoprop,geom_Lisoprop,geom_Risopropコマンド
TLRTerDiaPoint


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

スポンサードリンク