本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

複数の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のプロットデータを作成#####
#箱ひげ図
BoxPlot <- ggplot(data = TestData, aes(x = Group, y = Data1,
                                       fill = Group)) +
  geom_boxplot()
#散布図
PointPlot <- ggplot(data = TestData, aes(x = Data2, y = Data1,
                                         color = Group)) +
  geom_point() + ggtitle("TEST")
#棒グラフ
BarPlot <- ggplot(data = TestData, aes(x = Data4, fill = Data4)) +
  geom_bar() + guides(fill = "none")
#棒グラフをGroupで分割
FacetBarPlot <- ggplot(data = TestData, aes(x = Data4, fill = Data4)) +
  geom_bar() + facet_wrap(~Group, nrow = 1) + guides(fill = "none")
########

#グラフをまとめてプロット:grid.arrangeコマンド
#出力するグラフオブジェクトをlistで指定:grobsオプション
#グラフ横幅を指定:widthsオプション
#プロット分割の指定:layout_matrixオプション
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)))

#グラフのレイアウトを確認:expose_layoutコマンド
#基本的なコマンドは下記の通り
#expose_layout(p, draw = TRUE, newpage = TRUE)
#lapplyコマンドで指定すると簡単です
#gridパッケージを読み込む
library("grid")
ExLapplyPlots <- lapply(list(BoxPlot, PointPlot, BarPlot, FacetBarPlot),
                           expose_layout, draw = FALSE, newpage = FALSE)
#内容をプロット
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

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

スポンサーリンク
価格および配送状況は変更される場合があります。購入時は商品ページをご確認ください。
当サイトに表示されている商品情報はAmazonから提供されたものであり、更新または削除される場合があります。
karada-goodはAmazonアソシエイトとして、適格販売により収入を得ています。