# 如果未安装执行以下安装R包
# install.packages(c('ggplot2','ggprism','ggsignif','patchwork'))
library(tidyverse)
library(ggprism)
library(patchwork)
library(ggsignif)
%>% ggplot(aes(x = Species, y = Petal.Width, fill = Species)) +
iris geom_boxplot() +
theme_prism()
ggplot2图表添加p值
R语言是数据分析和可视化领域的强大工具,其中ggplot2包是R语言中最流行的可视化包之一。今天和大家分享几种在ggplot2绘制的图表上添加p值的方法。ggplot2 Playground为你提供了基于webr的在线执行R代码的方法,里面包含了本文示例及其他图表模板
绘制箱线图
ggprism包是ggplot2的扩展包,提供了各种主题、配色方案和其他功能,可以让ggplot2图形具有GraphPad Prism的风格
使用iris数据集,用Species作为x轴,Petal.Width作为y轴,绘制箱线图,并使用ggprism
包的 theme_prism()
设置GraphPad Prism风格的主题
添加p值
添加P值有2种不同的方法
ggsignif包
使用 ggsignif
包的 geom_signif
为上面的箱线图添加P值,每个 ggsignif
图层只能添加一组对比的p值,如果需要添加多组,则需要添加多个图层
ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_boxplot(show.legend = F) +
geom_signif(
comparisons = list(c("setosa", "versicolor")),
map_signif_level = TRUE
+
) geom_signif(
comparisons = list(c("versicolor", "virginica")),
map_signif_level = TRUE
+
) theme_prism()
geom_signif
是ggsignif
包中用于添加显著性标记的函数。以下是主要参数的作用:
comparisons :需要进行比较的组合列表,每个元素为长度为 2 的向量,指明要比较的两列名称或索引。
test :进行统计检验的函数名称,如 t.test、wilcox.test 等。
test.args :统计检验函数的额外参数。
annotations :自定义注释的文本向量,如果非空则忽略 test 参数。
map_signif_level :是否直接显示 p 值,或使用星号表示显著性水平。可以为布尔值、命名的数值向量(定义自定义映射),或函数(接收 p 值并返回字符串)。
y_position :括号的 y 轴位置。
xmin, xmax :括号的左右两侧位置。
margin_top :括号起始位置高于最大值的比例。
step_increase :每个额外比较的纵向偏移量,用于避免重叠。
tip_length :指示精确列的下指箭头长度占总高度的比例。
size :括号线条的宽度。
textsize :注释文本的字号。
family :注释文本的字体。
vjust :垂直调整注释文本的位置。
parse :是否将标签解析为表达式。
manual :是否手动提供参数数据框。
ggprism
包
使用ggprism
包的add_pvalue()
函数,该函数可以从数据框中获取显著检验结果,同时添加多个分组的显著检验线,示例如下:
library(rstatix)
Attaching package: 'rstatix'
The following object is masked from 'package:stats':
filter
<- iris %>%
df_p_val t_test(Sepal.Length ~ Species) %>%
add_xy_position()
ggplot(iris, aes(x = factor(Species), y = Sepal.Length)) +
geom_boxplot(aes(fill = Species)) +
add_pvalue(df_p_val) +
theme_prism()
数据框参数:
data: 包含要绘制的统计数据的数据框。默认格式包括以下列:group1 | group2 | p.adj | y.position | 等等。group1 和 group2 是进行比较的两组。p.adj 是校正后的 p 值。y.position 是指定 p 值在图上位置的 y 坐标。列名可以与默认值不同,只要在调用函数时指定即可。 文本和位置参数:
label: 指定要绘制的文本的列名(例如 label = “p.adj”)。也可以是可以被 glue 格式化的表达式(例如 label = “p = {p.adj}”)。 xmin: 指定括号左侧位置的列名。默认为 “group1”。 xmax: (可选)指定括号右侧位置的列名。默认为 “group2”。如果为 NULL,则 p 值仅显示为文本。 x: 仅当绘制不带括号的 p 值文本时使用。指定 p 值文本的 x 坐标。 y.position: 包含每个 p 值的 y 坐标(数值)的列名。也可以是一个数值,将所有 p 值绘制在同一高度,或一个数值向量来覆盖数据框中的 y.position 列。
文本格式参数:
parse: 默认为 FALSE。如果为 TRUE,文本标签将被解析为表达式并按照 plotmath 中的描述显示。
label.size: 文本大小。 colour, color: 文本颜色。
括号参数:
tip.length: 括号尖端的长度。使用 0 移除尖端。 bracket.size: 括号线宽。
bracket.color: 括号颜色。默认为 NULL,这会使括号继承文本的颜色。
bracket.shorten: 稍微缩短括号,以便它们可以并排绘制在相同的 y 位置。
bracket.nudge.y: 更改 p 值的 y 位置。如果文本被截断,可用于稍微调整 p 值。
step.increase: 更改括号之间的空间。
step.group.by: 用于对括号进行分组的变量。
remove.bracket: 如果为 TRUE,则移除所有括号,仅显示 p 值文本。
总结
ggprism
包的theme_prism()
设置GraphPad Prism风格的主题ggsignif
包的geom_signif
可以逐个添加P值使用
ggprism
包的add_pvalue()
函数,该函数可以从数据框中获取显著检验结果,同时添加多个分组的显著检验线