This is an introduction to a package that creates a “Raincloud” that uses a combination of boxplot, half-violin and point plots to represent data.
The commands of the “ggplot2” package are available, making it easy to customise the appearance.
Package version is 0.0.2. Checked with R version 4.2.2.
Install Package
Run the following command.
#Install Package install.packages("ggrain")
Example
See the command and package help for details.
#Loading the library library("ggrain") ###Create Data##### #Install the tidyverse package if it is not already there 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") ######## ###Creating Raincloud: geom_rain command##### #Used in conjunction with ggplot2 ggplot(TestData, aes(x = Time, y = Value, fill = Group, color = Group)) + #geom_rain command geom_rain( #How to plot a boxplot,violinplot: raine.side option #right: "r",left: "l",flanking: "f", #1-by-1 flanking: "f1x1",2-by-2 flanking: "f2x2" rain.side = "f", #Connect point plot with line based on indicator: id.long.var option id.long.var = "ID", #Specify color based on point plot index: cov option #Invalid if color is specified with the point.args option cov = "ID", ###Start_Formatting options for each plot##### #pointplot: point.args option point.args = list(color = "red", size = 1.5, alpha = 0.45), #boxplot: boxplot.args option boxplot.args = list(color = "black", outlier.shape = TRUE), #violinplot:violin.args option violin.args = list(color = "green", alpha = 0.75), #id.long.var: line.args option line.args = rlang::list2(color = "blue", size = 0.5, alpha = 0.3), ###End_Formatting options for each plot##### ###Start_Positioning options for each plot##### #Some raine.side options are invalid for "f1x1" and "f2x2# #pointplot: point.args.pos option point.args.pos = list(position = position_jitter(width = 0.04, height = 0)), #boxplot: boxplot.args.pos option boxplot.args.pos = list(width = 0.1, #Using the position_dodgenudge command from the ggpp package #Each axis is 0-based, 2Group in the example, #x=c(Time1:Group1 position, Time2:Group2 position,...) position = ggpp::position_dodgenudge(x = c(-.13, -.13, -.10, .10, .13, .38))), #violinplot: violin.args.pos option violin.args.pos = list(width = 0.4, #Using the position_nudge command from the ggplot2 package 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 option line.args.pos = list(position = position_jitter(width = 0.04, height = 0)), ###End_Positioning options for each plot##### ) -> BaseRaincloud #Check BaseRaincloud ###Adjusting the appearance of BaseRaincloud with the ggplot2 command##### BaseRaincloud + #boxplot,violinplot change fill color scale_fill_manual(values = c("lightblue", "yellow")) + #Hide legend guides(fill = "none", color = "none") + #Apply Theme theme_dark() + #Coord flip coord_flip() ########
Output Example
・geom_rain command
・Adjusting the appearance of BaseRaincloud with the ggplot2 command#
I hope this makes your analysis a little easier !!