You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot柱状图上方添加Kruskal-Wallis检验的显著性p值标记?

在ggplot柱状图上添加Dunn检验的显著性标记

你可以使用ggsignif包直接在柱状图上方添加带p值的显著性括号标记,以下是具体实现步骤:

1. 安装并加载所需包

除你已使用的包外,需额外安装并加载ggsignif:

install.packages("ggsignif")
library(ggsignif)

2. 提取Dunn检验的显著对比结果

先执行Dunn检验并提取显著组对的校正后p值:

# 执行Dunn检验并保存结果
dunn_result <- dunnTest(result ~ trt, data = example, method = "bonferroni")
# 筛选出显著(校正后p值<0.05)的组对
sig_pairs <- dunn_result$res %>% filter(P.adj < 0.05)
# 转换为ggsignif要求的对比格式
sig_contrasts <- split(sig_pairs[,c("Group1","Group2")], seq(nrow(sig_pairs)))

3. 修改ggplot代码添加显著性标记

基于你已有的柱状图代码,添加geom_signif()层实现标记:

# 计算图表的最大y值(均值+标准误),用于确定标记的垂直位置
max_y <- max(avg_data$data + sem_data$data)

ggplot(avg_data, aes(x = trt, y = data))+
  geom_bar(stat="identity", width = 0.2, position = "dodge", col = "black", fill = "blue")+
  geom_errorbar(aes(ymin = data, ymax = data + sem_data$data), width = 0.2, position = position_dodge(0.6))+
  # 添加显著性标记层
  geom_signif(
    comparisons = sig_contrasts,  # 指定要标记的组对
    y_position = c(max_y + 2, max_y + 5, max_y + 8),  # 每个标记的垂直高度(避免重叠)
    annotations = round(sig_pairs$P.adj, 4),  # 显示校正后的p值
    tip_length = 0.01,  # 括号尖端长度
    vjust = 0.2  # 文本垂直偏移
  )+
  xlab("处理组")+
  ylab("结果值")+
  ylim(min(avg_data$data), max_y + 10)  # 扩展y轴范围,确保标记完整显示

简化方式:手动指定已知显著组

若你已明确显著组对(1-2、2-3、2-4),可直接手动指定,无需提取检验结果:

ggplot(avg_data, aes(x = trt, y = data))+
  geom_bar(stat="identity", width = 0.2, position = "dodge", col = "black", fill = "blue")+
  geom_errorbar(aes(ymin = data, ymax = data + sem_data$data), width = 0.2, position = position_dodge(0.6))+
  geom_signif(
    comparisons = list(c("1","2"), c("2","3"), c("2","4")),
    y_position = c(max_y + 2, max_y + 5, max_y + 8),
    annotations = c("0.0023", "0.0015", "0.0031"),  # 替换为你的实际校正后p值
    tip_length = 0.01
  )+
  xlab("处理组")+
  ylab("结果值")+
  ylim(min(avg_data$data), max_y + 10)

注意事项

  • y_position需根据你的数据范围调整,避免标记重叠或超出图表
  • 若p值极小,可使用format(sig_pairs$P.adj, scientific = TRUE)以科学计数法显示
  • 若柱状图使用了position_dodge,需确保geom_signif的位置参数与之匹配

内容的提问来源于stack exchange,提问作者s_o_c_account

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:27:28