本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

箱ひげ図、ハーフバイオリンプロット、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コマンドで体裁を調整する

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

このコードの続きをAIに聞く

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.