箱ひげ図、ハーフバイオリンプロット、point plotの組み合わせでデータを表現する「Raincloud」を作成するパッケージの紹介です。
「ggplot2」パッケージのコマンドが利用できるので体裁の調整が簡単です。
パッケージバージョンは0.0.2。実行コマンドはR version 4.2.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール
install.packages("ggrain")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("ggrain")
###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 100
TestData <- tibble(Group = sample(paste0("Group ", 1:2), n, replace = TRUE),
Time_1 = rnorm(n) - 1.5,
Time_2 = rnorm(n),
Time_3 = rnorm(n) - 1.5,) %>%
rowid_to_column("ID") %>%
pivot_longer(!c(Group, ID), names_to = "Time", values_to = "Value")
########
###Raincloudの作成:geom_rainコマンド#####
#ggplot2と組み合わせて使用します
ggplot(TestData, aes(x = Time, y = Value,
fill = Group, color = Group)) +
#geom_rainコマンド
geom_rain(
#boxplot,violinplotのプロット方法:raine.sideオプション
#右:"r",左:"l",側面:"f",指標ごと:"f1x1",plotごと"f2x2"
rain.side = "f",
#pointplotを指標を基準に線でつなぐ:id.long.varオプション
id.long.var = "ID",
#pointplotの指標を基準に色を指定:covオプション
#point.argsオプションで色を指定した場合無効
cov = "ID",
###ここから各プロットの体裁調整オプション#####
#pointplot:point.argsオプション;listで指定
point.args = list(color = "red", size = 1.5,
alpha = 0.45),
#boxplot:boxplot.argsオプション;listで指定
boxplot.args = list(color = "black",
#外れ値の表示
outlier.shape = TRUE),
#violinplot:violin.argsオプション;listで指定
violin.args = list(color = "green", alpha = 0.75),
#id.long.varオプションの線:line.argsオプション;listで指定
line.args = rlang::list2(color = "blue", size = 0.5,
alpha = 0.3),
###ここまで各プロットの体裁調整オプション#####
###ここから各プロットの位置調整オプション#####
#raine.sideオプションが"f1x1","f2x2"で一部無効#
#pointplot:point.args.posオプション;listで指定
point.args.pos = list(position = position_jitter(width = 0.04,
height = 0)),
#boxplot:boxplot.args.posオプション;listで指定
boxplot.args.pos = list(width = 0.1,
#「ggpp」パッケージのposition_dodgenudgeコマンドを利用
#各軸は0が基準,例では2Group,
#x=c(Time1:Group1位置, Time2:Group2位置,...)と指定
position = ggpp::position_dodgenudge(x = c(-.13, -.13,
-.10, .10,
.13, .38))),
#violinplot:violin.args.posオプション;listで指定
violin.args.pos = list(width = 0.4,
#「ggplot2」パッケージのposition_nudgeコマンドを利用
position = position_nudge(x = c(rep(-.2, 256*2),
rep(-.38, 256*2),
rep(-.2, 256*2),
rep(.2, 256*2),
rep(.15, 256*2),
rep(.45, 256*2)))),
#id.long.varオプションの線:line.args.posオプション;listで指定
line.args.pos = list(position = position_jitter(width = 0.04,
height = 0)),
###ここまで各プロットの位置調整オプション#####
) -> BaseRaincloud
#確認
BaseRaincloud
###BaseRaincloudをggplot2コマンドで体裁を調整する#####
BaseRaincloud +
#boxplot,violinplotの塗色変更
scale_fill_manual(values = c("lightblue", "yellow")) +
#凡例の非表示
guides(fill = "none", color = "none") +
#テーマを適用
theme_dark() +
#軸の反転
coord_flip()
########
出力例
・geom_rainコマンド

・ggplot2コマンドで体裁を調整する

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