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

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

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コマンド
#プロットタイプを指定:plot_typeオプション;
#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

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

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.