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の作成: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コマンドで体裁を調整する


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

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