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

如何在ggboxplot的fill分组内添加指定组的显著性棒

解决方案

要在「post-stress」(对应数据中的MAST_post)时间点下,仅为NC与IUD组添加显著性棒,你需要限定显著性检验的数据集范围,并指定目标分组的对比组合,具体代码如下:

完整代码示例

首先补充定义你用到的调色板(示例颜色可自行替换):

my_palette <- c("NC" = "#1f77b4", "IUD" = "#ff7f0e", "OC" = "#2ca02c")

在原有箱线图基础上,添加针对MAST_post时间点的显著性标记层:

bxp_stress <-
  subjstress %>%
  ggboxplot( x = "timetask",
             y = "Stress",
             fill = "group",
             xlab = "timepoint",
             ylab = "subjective rating [VAS]",
             title = "Subjective stress"
  )+
  scale_fill_manual(values = my_palette) +
  scale_x_discrete(labels = c("pre-ctrl", "post-ctrl", "pre-stress", "post-stress")) +
  # 原有跨时间点的显著性棒
  geom_signif(comparisons = list(c("MAST_pre", "MAST_post"), c("plac_post", "MAST_post")),
              annotations = "***",
              step_increase = 0.05,
              map_signif_level = TRUE,
              vjust = 0.4, 
              tip_length = 0) +
  # 新增MAST_post下NC与IUD的显著性棒
  stat_compare_means(
    data = subset(subjstress, timetask == "MAST_post"), # 仅筛选post-stress时间点的数据
    aes(group = group),
    comparisons = list(c("NC", "IUD")), # 指定仅对比NC和IUD两组
    label = "p.signif", # 显示自动计算的显著性标记(*、**等)
    tip.length = 0,
    vjust = 0.4
  )

print(bxp_stress)

关键说明

  • data = subset(subjstress, timetask == "MAST_post"):把显著性检验的范围限制在「post-stress」时间点内,避免生成全局的组间显著性。
  • comparisons = list(c("NC", "IUD")):明确指定只对比NC和IUD两组,不会自动遍历所有分组组合。
  • 如果需要固定显示特定显著性标记(比如强制显示***),可以替换stat_compare_means为geom_signif:
geom_signif(
  data = subset(subjstress, timetask == "MAST_post"),
  aes(group = group),
  comparisons = list(c("NC", "IUD")),
  annotations = "***",
  step_increase = 0.05,
  vjust = 0.4,
  tip_length = 0,
  x_position = c(3.6, 4) # 适配默认分组偏移的x坐标,确保棒线位置准确
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:57:05