Rで解析:ggplot2を手軽に利用「ggmatplot」パッケージ


「ggplot2」パッケージはRでデータを図にする際の強力な手段です。しかし、手軽に使いたい時にデータを図に対応するための変換が手間な時があります。そんな手間を解決し、ワイド型のデータのままで簡単にプロットするパッケージの紹介です。

参考までに「ggplot2」パッケージでpointを除き各図を再現するコマンド例も紹介します。

パッケージバージョンは0.1.1。実行コマンドはwindows 11のR version 4.1.2で確認しています。

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

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

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

実行コマンド

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

#パッケージの読み込み
library("ggmatplot")

#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}

###データ例の作成#####
set.seed(1234)
n <- 300
TestData <- tibble(Group = sample(paste0("Group", 1:2), n,
                                  replace = TRUE),
                   X_Data1 = sample(c(1:50), n, replace = TRUE),
                   X_Data2 = sample(c(1:100), n, replace = TRUE),
                   Y_Data1 = sample(c(1:50), n, replace = TRUE),
                   Y_Data2 = sample(c(1:100), n, replace = TRUE))
#確認
TestData
# A tibble: 300 x 5
   Group  X_Data1 X_Data2 Y_Data1 Y_Data2
   <chr>    <int>   <int>   <int>   <int>
1 Group2      19      48      17      25
2 Group1       3      65      24      75
3 Group2       6      33       9      77
4 Group1      22      64      39      77
5 Group2      43      18      11      63
6 Group2      32      14       3      44
7 Group2      34      92      34      35
8 Group1       2      63      27      10
9 Group1       4      55       8      95
10 Group1      34      19      24      97
# ... with 290 more rows
#######

#ワイド型データでプロット:ggmatplotコマンド
#プロットタイプを指定:ggmatplotオプション;
#point,line,both(point + line),density,histogram,
#boxplot,dotplot,errorplot,violin,ecdfが指定可能
#その他オプションは説明なくとも理解できるので省略,ヘルプ参照
ggmatplot(x = TestData %>% select(X_Data1, X_Data2),
          y = TestData %>% select(Y_Data1, Y_Data2),
          plot_type = "point", color = NULL,
          fill = NULL, shape = c(2, 4), linetype = NULL,
          log = NULL, main = "karada-good",
          xlab = "Xデータ", ylab = "Yデータ",
          legend_label = NULL, legend_title = "karada-good",
          desc_stat = "mean_se")
#散布図のggplot2コマンドは省略

###例:violin#####
ggmatplot(x = TestData %>% select(X_Data1, X_Data2),
          plot_type = "violin", color = NULL,
          fill = c("#a87963", "red"), alpha = 0.4, main = "karada-good",
          xlab = "Xデータ", ylab = "Value",
          legend_label = NULL, legend_title = "karada-good",
          desc_stat = "mean_se")

###ggplot2の場合
TestData %>% select(X_Data1, X_Data2) %>%
  pivot_longer(cols = X_Data1:X_Data2,
               names_to = "Name", values_to = "Value") %>%
  ggplot(aes(x = Name, y = Value, fill = Name)) +
  geom_violin(alpha = 0.4) +
  scale_fill_manual(values = c("#a87963", "red")) +
  labs(title = "karada-good", x = "Xデータ",
       y = "Value", fill = "karada-good")

###例:BoxPlot#####
ggmatplot(x = TestData %>% select(X_Data1, X_Data2),
          plot_type = "boxplot", color = c("#a87963", "red"),
          fill = c("#a87963", "red"), main = "karada-good",
          xlab = "Xデータ", ylab = "Value",
          legend_label = NULL, legend_title = "karada-good",
          desc_stat = "mean_se")

###ggplot2の場合
TestData %>% select(X_Data1, X_Data2) %>%
  pivot_longer(cols = X_Data1:X_Data2,
               names_to = "Name", values_to = "Value") %>%
  ggplot(aes(x = Name, y = Value, fill = Name, col = Name)) +
  geom_boxplot(alpha = 0.5) +
  scale_fill_manual(values = c("#a87963", "red")) +
  scale_color_manual(values = c("#a87963", "red"),
                     guide = "none") +
  labs(title = "karada-good", x = "Xデータ",
       y = "Value", fill = "karada-good")

###例:ecdf#####
ggmatplot(x = TestData %>% select(X_Data1, X_Data2),
          plot_type = "ecdf", color = NULL,
          fill = c("#a87963", "red"), main = "karada-good",
          xlab = "Xデータ", ylab = "Value",
          legend_label = NULL, legend_title = "karada-good",
          desc_stat = "mean_se")

###ggplot2の場合
TestData %>% select(X_Data1, X_Data2) %>%
  pivot_longer(cols = X_Data1:X_Data2,
               names_to = "Name", values_to = "Value") %>%
  ggplot(aes(x = Value, col = Name)) +
  stat_ecdf(geom = "step") +
  scale_color_manual(values = c("#a87963", "red")) +
  labs(title = "karada-good", x = "Xデータ",
       y = "Value", col = "karada-good")

出力例

・散布図

・例:violin

・例:BoxPlot

・例:ecdf


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

スポンサードリンク

スポンサードリンク