📅  最后修改于: 2023-12-03 15:12:50.199000             🧑  作者: Mango
雨云图(Raincloud plot)是一种新型的数据可视化方式,它结合了箱线图、直方图和核密度估计图。它能够同时呈现数据的分布、统计和显著性检验信息,从而更加直观地表示数据。在生物统计学等领域,雨云图越来越受到关注和应用。
首先需要准备一组数据,接下来我们以 iris 数据集中的花瓣长度为例子。使用 R 语言内置的 iris 数据集。
data(iris)
iris_data <- iris[, c("Species", "Petal.Length")]
安装和加载 ggplot2、tidyverse 和 ggridges 等程序包。
install.packages("ggplot2")
install.packages("tidyverse")
install.packages("ggridges")
library(ggplot2)
library(tidyverse)
library(ggridges)
使用 ggplot2 中的 geom_violin()、geom_jitter() 和 stat_summary() 函数来绘制雨云图,并配合上相应的 geom_text() 函数和分面(Facets),来添加显著性检验信息。
ggplot(data = iris_data, aes(x = Species, y = Petal.Length, fill = Species)) +
geom_violin(trim = T, scale = "width", adjust = 1.2) +
geom_jitter(col = "black", size = 0.5, alpha = 0.7) +
stat_summary(fun.data = mean_sdl, geom = "crossbar", width = 0.1, size = 1.2, color = "black", alpha = 0.5) +
geom_text(aes(x = Species, y = mean(Petal.Length) + 1.5*sd(Petal.Length), label = paste("Mean:", round(mean(Petal.Length), 2), "\nSD:", round(sd(Petal.Length), 2))), size = 3, fontface = 'bold', color = "black") +
facet_wrap(~ Species, ncol = 1) +
theme_classic() +
labs(x = "", y = "Petal Length") +
theme(legend.position = "none",
panel.background = element_rect(fill = "white"),
axis.ticks = element_blank(),
panel.grid = element_blank(),
axis.line = element_line(color = "black"))
当数据量较大时,使用 geom_jitter() 函数可能会导致数据点之间的重合,因此需要考虑其他的数据点抖动方法,如根据 Sampling 和 binwidth(条形图的宽度)的选取抖动数据点,或者使用更加高级的 jitter 方法等。
本文介绍了如何使用半小提琴图和 R 中的抖动数据点绘制雨云图,并添加了显著性检验信息。当然,如果使用其他数据抖动方法,或者对雨云图的布局和配色等要求更高,还需要进一步了解 ggplot2、tidyr 和 ggridges 等程序包的更高级的技巧和功能。