Rで解析:複数のggplotオブジェクトのプロットに便利です。「egg」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

複数のggplotオブジェクトのプロットするのに便利なパッケージです。特にデータを決まった様式で繰り返しプロットする場合に役に立つかと思います。なお、プロットのレイアウトを確認する「expose_layout」は便利だと思います。

パッケージバージョンは0.4.5。windows11のR version 4.2.2で確認しています。

スポンサーリンク

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

下記、コマンドを実行してください。

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

実行コマンド

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

#パッケージの読み込み
library("egg")
#日付データの作成に便利:lubridateパッケージがなければインストール
if(!require("lubridate", quietly = TRUE)){
  install.packages("lubridate");require("lubridate")
}

###データ例の作成#####
set.seed(1234)
n <- 30
TestData <- tibble(Group = sample(paste0("Group", 1:5), n, replace = TRUE),
                   Data1 = rnorm(n),
                   Data2 = rnorm(n) + rnorm(n) + rnorm(n),
                   Data3 = sample(0:1, n, replace = TRUE),
                   Data4 = sample(LETTERS[1:26], n, replace = TRUE))
########

###ggplot2&#12398;&#12503;&#12525;&#12483;&#12488;&#12487;&#12540;&#12479;&#12434;&#20316;&#25104;#####
#&#31665;&#12402;&#12370;&#22259;
BoxPlot <- ggplot(data = TestData, aes(x = Group, y = Data1,
                                       fill = Group)) +
  geom_boxplot()
#&#25955;&#24067;&#22259;
PointPlot <- ggplot(data = TestData, aes(x = Data2, y = Data1,
                                         color = Group)) +
  geom_point() + ggtitle("TEST")
#&#26834;&#12464;&#12521;&#12501;
BarPlot <- ggplot(data = TestData, aes(x = Data4, fill = Data4)) +
  geom_bar() + guides(fill = "none")
#&#26834;&#12464;&#12521;&#12501;&#12434;Group&#12391;&#20998;&#21106;
FacetBarPlot <- ggplot(data = TestData, aes(x = Data4, fill = Data4)) +
  geom_bar() + facet_wrap(~Group, nrow = 1) + guides(fill = "none")
########

#&#12464;&#12521;&#12501;&#12434;&#12414;&#12392;&#12417;&#12390;&#12503;&#12525;&#12483;&#12488;:grid.arrange&#12467;&#12510;&#12531;&#12489;
#&#20986;&#21147;&#12377;&#12427;&#12464;&#12521;&#12501;&#12458;&#12502;&#12472;&#12455;&#12463;&#12488;&#12434;list&#12391;&#25351;&#23450;:grobs&#12458;&#12503;&#12471;&#12519;&#12531;
#&#12464;&#12521;&#12501;&#27178;&#24133;&#12434;&#25351;&#23450;:widths&#12458;&#12503;&#12471;&#12519;&#12531;
#&#12503;&#12525;&#12483;&#12488;&#20998;&#21106;&#12398;&#25351;&#23450;:layout_matrix&#12458;&#12503;&#12471;&#12519;&#12531;
grid.arrange(grobs = list(BoxPlot, PointPlot, BarPlot, FacetBarPlot),
             widths = c(1.5, 1),
             layout_matrix = rbind(c(1, 2), c(3, 3), c(4, 4)))

#&#12464;&#12521;&#12501;&#12398;&#12524;&#12452;&#12450;&#12454;&#12488;&#12434;&#30906;&#35469;:expose_layout&#12467;&#12510;&#12531;&#12489;
#&#22522;&#26412;&#30340;&#12394;&#12467;&#12510;&#12531;&#12489;&#12399;&#19979;&#35352;&#12398;&#36890;&#12426;
#expose_layout(p, draw = TRUE, newpage = TRUE)
#lapply&#12467;&#12510;&#12531;&#12489;&#12391;&#25351;&#23450;&#12377;&#12427;&#12392;&#31777;&#21336;&#12391;&#12377;
#grid&#12497;&#12483;&#12465;&#12540;&#12472;&#12434;&#35501;&#12415;&#36796;&#12416;
library("grid")
ExLapplyPlots <- lapply(list(BoxPlot, PointPlot, BarPlot, FacetBarPlot),
                           expose_layout, draw = FALSE, newpage = FALSE)
#&#20869;&#23481;&#12434;&#12503;&#12525;&#12483;&#12488;
grid.arrange(grobs = ExLapplyPlots,
             widths = c(1.5, 1),
             layout_matrix = rbind(c(1, 2), c(3, 3), c(4, 4))
)

出力例

・grid.arrangeコマンド

grid.arrange

・expose_layoutコマンド

expose_layout

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

タイトルとURLをコピーしました