该内容已被发布者删除 该内容被自由微信恢复。
文章于 3月31日 下午 5:00 被检测为删除。
被用户删除
其他
R语言绘图 | 快速为ggplot2图形添加统计P值
准备
❝ggpval包可以执行统计检验,并且自动在ggplot2图形上添加相应的P值,P值可以显示为数字或者星形符号,也可以显示为文本注释。
install.packages("ggpval") # 安装 ggpval 包
library(ggpval) # 加载 ggpval 包
library(data.table) # 加载 data.table 包
library(ggplot2) # 加载 ggplot2 包
A <- rnorm(200, 0, 3) # 生成第一组随机数
B <- rnorm(200, 2, 4) # 生成第二组随机数
G <- rep(c("G1", "G2"), each = 100) # 生成分组信息
dt <- data.table(A, B, G) # 创建数据表
dt <- melt(dt, id.vars = "G") # 融合数据表,保留 G 列作为标识符
theme_set(theme_classic()) # 设置图形主题
箱型图
plt <- ggplot(dt, aes(variable, value)) + # 创建基础图形对象
geom_boxplot() + # 添加箱线图层
geom_jitter() # 添加抖动点层
add_pval(plt, # 添加 p 值到图形中
pairs = list(c(1, 2)),
test='wilcox.test',
alternative='two.sided')
转换为 plotly 图:
plt <- ggplot(dt, aes(variable, value)) + # 创建基础图形对象
geom_boxplot() + # 添加箱线图层
geom_jitter() # 添加抖动点层
plt <- add_pval(plt, # 添加 p 值到图形中,使用 plotly
pairs = list(c(1, 2)),
test = "t.test",
plotly=TRUE)
plotly::ggplotly(plt) # 转换为 plotly 图
分面箱型图
plt <- ggplot(dt, aes(variable, value)) + # 创建基础图形对象
geom_boxplot() + # 添加箱线图层
geom_jitter() + # 添加抖动点层
facet_wrap(~G) # 按照 G 分面展示
add_pval(plt, # 添加 p 值到图形中
pairs = list(c(1, 2)))
用annotation
指定添加注释文本:
add_pval(plt, # 添加带注释的 p 值到图形中
pairs = list(c(1, 2)),
annotation = "Awesome")
给annotation
参数添加list
注释:
add_pval(plt, # 添加带注释的 p 值到图形中,分别指定注释文本
pairs = list(c(1, 2)),
annotation = list("Awesome1", "Awesome2"))
条形图
dt[, mu := mean(value), # 计算每组每个变量的均值
by = c("G", "variable")]
dt[, se := sd(value) / .N, # 计算每组每个变量的标准误
by = c("G", "variable")]
plt_bar <- ggplot(dt, # 创建条形图基础图形对象
aes(x=variable,
y=mu,
fill = variable)) +
geom_bar(stat = "identity", # 添加条形图层
position = 'dodge') +
geom_errorbar(aes(ymin=mu-se,
ymax=mu+se), # 添加误差线
width = .2) +
facet_wrap(~G) # 按照 G 分面展示
add_pval(plt_bar, # 添加 p 值到条形图中
pairs = list(c(1, 2)),
response = 'value')
显示星号:
add_pval(plt_bar, # 添加 p 值到条形图中,使用 t.test,显示星号
pairs = list(c(1, 2)),
test = 't.test',
alternative = "less",
response = 'value',
pval_star = T)
参考资料:https://github.com/s6juncheng/ggpval?tab=readme-ov-file