「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
少しでも、あなたの解析が楽になりますように!!