「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

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