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

如何在ggpubr分组箱线图中添加组间与组内比较统计量?

在ggpubr箱线图中添加特定组的统计比较

没问题,我来帮你搞定这个ggpubr的统计比较设置!你的需求是针对Treatment和Allele的组合组进行特定比较,关键就是正确定义my_comparisons参数——它本质是一个列表,每个元素对应一组你想比较的组对,组名需要用Treatment:Allele的格式(因为你的x轴是Treatment,color是Allele,ggpubr会把这两个变量的交互视为独立分组)。

第一步:定义你需要的比较组对

根据你的需求,直接写出对应的组对列表即可:

# 定义要比较的组组合
my_comparisons <- list(
  # 第一个比较:Control组的Major vs STRESS组的Major
  c("Control:Major", "STRESS:Major"),
  # 第二个比较:Control组内的Major vs Minor
  c("Control:Major", "Control:Minor")
)

注意:如果你的实际数据里Control组没有Major样本(看你给的示例数据里Control只有Minor),记得把第二个比较换成你实际存在的组,比如c("Control:Minor", "STRESS:Minor")。

第二步:把统计比较加到箱线图里

把my_comparisons传入stat_compare_means(),同时可以指定统计方法、p值显示格式和标签位置,避免重叠:

intensity <- read.table("light_intensity.txt", header = TRUE)
ggboxplot(intensity, x = "Treatment", y = "Intensity", color = "Allele", palette = "jco") +
  stat_compare_means(
    comparisons = my_comparisons,
    method = "t.test",  # 数据符合正态分布用这个,非正态换wilcox.test
    label = "p.format",  # 显示格式化的p值(比如p=0.03)
    label.y = c(8000, 9000)  # 调整每个标签的y轴高度,根据你的Intensity范围修改
  )

额外小提示

  • 如果想同时添加整体的组间差异统计(比如ANOVA),可以再加一行stat_compare_means(method = "anova", label.y = 10000),把标签放在更高的位置。
  • 如果标签还是重叠,可以尝试调整label.y的数值,或者用vjust参数微调垂直位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:27:15