Rで解析:Raincloudを作成しようか?「ggrain」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

箱ひげ図、ハーフバイオリンプロット、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&#12398;&#20316;&#25104;:geom_rain&#12467;&#12510;&#12531;&#12489;#####
#ggplot2&#12392;&#32068;&#12415;&#21512;&#12431;&#12379;&#12390;&#20351;&#29992;&#12375;&#12414;&#12377;
ggplot(TestData, aes(x = Time, y = Value,
                     fill = Group, color = Group)) +
  #geom_rain&#12467;&#12510;&#12531;&#12489;
  geom_rain(
    #boxplot,violinplot&#12398;&#12503;&#12525;&#12483;&#12488;&#26041;&#27861;:raine.side&#12458;&#12503;&#12471;&#12519;&#12531;
    #&#21491;:"r",&#24038;:"l",&#20596;&#38754;:"f",&#25351;&#27161;&#12372;&#12392;:"f1x1",plot&#12372;&#12392;"f2x2"
    rain.side = "f",
    
    #pointplot&#12434;&#25351;&#27161;&#12434;&#22522;&#28310;&#12395;&#32218;&#12391;&#12388;&#12394;&#12368;:id.long.var&#12458;&#12503;&#12471;&#12519;&#12531;
    id.long.var = "ID", 
    
    #pointplot&#12398;&#25351;&#27161;&#12434;&#22522;&#28310;&#12395;&#33394;&#12434;&#25351;&#23450;:cov&#12458;&#12503;&#12471;&#12519;&#12531;
    #point.args&#12458;&#12503;&#12471;&#12519;&#12531;&#12391;&#33394;&#12434;&#25351;&#23450;&#12375;&#12383;&#22580;&#21512;&#28961;&#21177;
    cov = "ID",
    
    ###&#12371;&#12371;&#12363;&#12425;&#21508;&#12503;&#12525;&#12483;&#12488;&#12398;&#20307;&#35009;&#35519;&#25972;&#12458;&#12503;&#12471;&#12519;&#12531;#####
    #pointplot:point.args&#12458;&#12503;&#12471;&#12519;&#12531;;list&#12391;&#25351;&#23450;
    point.args = list(color = "red", size = 1.5,
                      alpha = 0.45),
    #boxplot:boxplot.args&#12458;&#12503;&#12471;&#12519;&#12531;;list&#12391;&#25351;&#23450;
    boxplot.args = list(color = "black",
                        #&#22806;&#12428;&#20516;&#12398;&#34920;&#31034;
                        outlier.shape = TRUE),
    #violinplot:violin.args&#12458;&#12503;&#12471;&#12519;&#12531;;list&#12391;&#25351;&#23450;
    violin.args = list(color = "green", alpha = 0.75),
    #id.long.var&#12458;&#12503;&#12471;&#12519;&#12531;&#12398;&#32218;:line.args&#12458;&#12503;&#12471;&#12519;&#12531;;list&#12391;&#25351;&#23450;
    line.args = rlang::list2(color = "blue", size = 0.5,
                             alpha = 0.3),
    ###&#12371;&#12371;&#12414;&#12391;&#21508;&#12503;&#12525;&#12483;&#12488;&#12398;&#20307;&#35009;&#35519;&#25972;&#12458;&#12503;&#12471;&#12519;&#12531;#####
    
    ###&#12371;&#12371;&#12363;&#12425;&#21508;&#12503;&#12525;&#12483;&#12488;&#12398;&#20301;&#32622;&#35519;&#25972;&#12458;&#12503;&#12471;&#12519;&#12531;#####
    #raine.side&#12458;&#12503;&#12471;&#12519;&#12531;&#12364;"f1x1","f2x2"&#12391;&#19968;&#37096;&#28961;&#21177;#
    #pointplot:point.args.pos&#12458;&#12503;&#12471;&#12519;&#12531;;list&#12391;&#25351;&#23450;
    point.args.pos = list(position = position_jitter(width = 0.04,
                                                     height = 0)),
    #boxplot:boxplot.args.pos&#12458;&#12503;&#12471;&#12519;&#12531;;list&#12391;&#25351;&#23450;
    boxplot.args.pos = list(width = 0.1,
                            #&#12300;ggpp&#12301;&#12497;&#12483;&#12465;&#12540;&#12472;&#12398;position_dodgenudge&#12467;&#12510;&#12531;&#12489;&#12434;&#21033;&#29992;
                            #&#21508;&#36600;&#12399;0&#12364;&#22522;&#28310;,&#20363;&#12391;&#12399;2Group,
                            #x=c(Time1:Group1&#20301;&#32622;, Time2:Group2&#20301;&#32622;,...)&#12392;&#25351;&#23450;
                            position = ggpp::position_dodgenudge(x = c(-.13, -.13,
                                                                       -.10, .10,
                                                                       .13, .38))),
    #violinplot:violin.args.pos&#12458;&#12503;&#12471;&#12519;&#12531;;list&#12391;&#25351;&#23450;
    violin.args.pos = list(width = 0.4,
                           #&#12300;ggplot2&#12301;&#12497;&#12483;&#12465;&#12540;&#12472;&#12398;position_nudge&#12467;&#12510;&#12531;&#12489;&#12434;&#21033;&#29992;
                           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&#12458;&#12503;&#12471;&#12519;&#12531;&#12398;&#32218;:line.args.pos&#12458;&#12503;&#12471;&#12519;&#12531;;list&#12391;&#25351;&#23450;
    line.args.pos = list(position = position_jitter(width = 0.04,
                                                    height = 0)),
    ###&#12371;&#12371;&#12414;&#12391;&#21508;&#12503;&#12525;&#12483;&#12488;&#12398;&#20301;&#32622;&#35519;&#25972;&#12458;&#12503;&#12471;&#12519;&#12531;#####
    ) -> BaseRaincloud

#&#30906;&#35469;
BaseRaincloud

###BaseRaincloud&#12434;ggplot2&#12467;&#12510;&#12531;&#12489;&#12391;&#20307;&#35009;&#12434;&#35519;&#25972;&#12377;&#12427;#####
BaseRaincloud +
  #boxplot,violinplot&#12398;&#22615;&#33394;&#22793;&#26356;
  scale_fill_manual(values = c("lightblue", "yellow")) +
  #&#20961;&#20363;&#12398;&#38750;&#34920;&#31034;
  guides(fill = "none", color = "none") +
  #&#12486;&#12540;&#12510;&#12434;&#36969;&#29992;
  theme_dark() + 
  #&#36600;&#12398;&#21453;&#36578;
  coord_flip()
########

出力例

・geom_rainコマンド

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


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

タイトルとURLをコピーしました