ggplot2にはデータを分割プロットする「facet_wrap」や「facet_grid」コマンドが収録されています。これらコマンドは非常に便利ですが、分割前のプロットは別途コマンド実行が必要です。本パッケージには分割前と指定したグループを拡大表示してくれる「facet_zoom」コマンドが収録されています。「facet_wrap」や「facet_grid」コマンドと使用目的が異なりますが便利なので紹介します。
なお、「facet_zoom」コマンドの例は散布図ですが箱ひげ図や折れ線グラフなども適応可能です。
パッケージバージョンは0.4.1。実行コマンドはwindows 11のR version 4.2.1で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("ggforce")
実行コマンドの紹介
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読込み
library("ggforce")
###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
TestData <- tibble(Group = c(rep("Group1", 200), rep("Group2", 200),
rep("Group3", 500)),
Data1 = c(rnorm(200, 1, 1.5), rnorm(30, 5, 2),
rnorm(170, 7, 5), rnorm(250, 8, 2),
rnorm(250, 15, .8)),
Data2 = c(rnorm(200, 1, 1.5), rnorm(30, 5, 2),
rnorm(170, 7, 5), rnorm(250, 8, 2),
rnorm(250, 15, .8)))
########
#指定したグループを拡大表示:facet_zoomコマンド
#煩雑になるのでベースとなる散布図を準備
#例では散布図ですがboxplot,lineplotなどでも適応可能です
BasePoint <- ggplot(TestData, aes(x = Data1, y = Data2, colour = Group)) +
geom_point()
#y軸方向で拡大
BasePoint + facet_zoom(y = Group == "Group1")
#x軸方向で拡大
BasePoint + facet_zoom(x = Group == "Group1")
#xy軸方向で拡大
BasePoint + facet_zoom(xy = Group == "Group1")
#特定のグループを除外して拡大
#!の演算子を使用する
BasePoint + facet_zoom(x = Group != "Group1", y = Group == "Group1")
#violinplotのポイント型:geom_sinaコマンド
#violinplotとsinaplotを並べて表示
library("grid")
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))
#violinplot
print(ggplot(TestData, aes(x = Group, y = Data2)) +
geom_violin(aes(fill = Group)) +
ggtitle("Violin Plot"),
vp = viewport(layout.pos.row = 1, layout.pos.col = 1))
#geom_sinaコマンド
#ポイントサイズの指定:sizeオプション
print(ggplot(TestData, aes(x = Group, y = Data2)) +
geom_sina(aes(color = Group), size = 1) +
ggtitle("Sina Plot"),
vp = viewport(layout.pos.row = 1, layout.pos.col = 2))
出力例
・facet_zoomコマンド y軸方向で拡大

・facet_zoomコマンド x軸方向で拡大

・facet_zoomコマンド xy軸方向で拡大

・facet_zoomコマンド 特定のグループを除外して拡大

・facet_zoomコマンド 参考:BoxPlot

・geom_sinaコマンド

少しでも、あなたの解析が楽になりますように!!