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)

出力例

・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


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

スポンサードリンク

おすすめコンテンツ


スポンサードリンク