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

如何用ggsignif为分组箱线图的特定子组配对标注显著性?

解决ggsignif在分组箱线图中仅标注特定子组显著性的问题

问题描述

在按Treatment分组、Nregime为填充子组的箱线图中,使用ggsignif为Ct2和D9组添加显著性条时,条会自动覆盖两个Nregime子组,但仅蓝色的Nfix子组的Ct2与D9存在显著性差异,需要调整显著性条位置至Nfix子组上方,或仅标注该子组的显著性。

解决方案

方法1:通过筛选数据指定标注子组

利用geom_signif的data参数仅传入Nfix子组的数据,并匹配箱线图的position_dodge宽度,让显著性条自动对齐到对应子组的箱线上方。

修正后的完整代码:

library(ggplot2)
library(ggsignif)
library(readr)

# 导入数据
Structured_Data <- read_delim("RoundedCleanedData.csv", delim = ";", escape_double = FALSE, trim_ws = TRUE)

# 绘制基础箱线图(修正aes写法,避免直接引用$data$列)
flavDWBox <- ggplot(data = Structured_Data, aes(x = Treatment, y = `Flav ug/mg dry`, fill = Nregime)) + 
  geom_boxplot(position = position_dodge2(width = 0.75)) + 
  labs(y = "Flavonoid μg/mg dry weight", title="Flavonoid Concentrations per Treatment") +
  theme_bw() +
  theme(title = element_text(size = 10, face = 'bold'), plot.title = element_text(hjust = 0.5))

# 添加仅针对Nfix子组的显著性标注
flavDWBox +
  geom_signif(
    data = subset(Structured_Data, Nregime == "Nfix"),  # 仅使用Nfix子组数据
    comparisons = list(c("Ct2", "D9")),
    map_signif_level = TRUE,
    position = position_dodge(width = 0.75),  # 和箱线图的dodge宽度保持一致
    y_position = 120  # 根据你的数据分布调整y轴位置,确保条在箱线上方
  )

方法2:手动指定显著性条的x轴位置

如果方法1的位置仍有偏差,可以通过查看箱线图的实际坐标,手动设置显著性条的x和xend参数:

  1. 先查看箱线图的坐标信息:
# 提取箱线图的位置数据
p_build <- ggplot_build(flavDWBox)
print(p_build$data[[1]][, c("x", "fill", "group")])  # 查看每个箱线的x坐标、填充分组和组号
  1. 根据输出结果找到Nfix子组对应的Ct2和D9的x值(例如假设为1.375和3.375),然后手动标注:
flavDWBox +
  geom_signif(
    x = 1.375,  # Nfix-Ct2的x坐标
    xend = 3.375,  # Nfix-D9的x坐标
    annotations = "***",  # 替换为实际的显著性水平,或用map_signif_level计算
    y_position = 120,
    tip_length = 0.01  # 调整显著性条两端的小竖线长度
  )

关键说明

  • 原代码中aes里的y = Structured_Data$Flav ug/mg dry写法不规范,改为直接引用列名`y = `Flav ug/mg dry,避免ggplot环境冲突。
  • 确保geom_boxplot和geom_signif的position_dodge宽度一致,这样显著性条才能准确对齐子组箱线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:35:36