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

在R的ggplot折线图中添加组间显著性值的技术问题

问题原因分析
  1. 数据集使用错误:你用了summarySE汇总后的统计数据(weightsFile_stats)来运行stat_compare_means,但这个函数需要原始个体数据才能计算t检验的统计量,汇总数据里没有单个观测值,无法完成计算。
  2. 比较组格式错误:my_comparisons应该是包含向量对的列表,而非单个向量,原格式会导致函数无法识别要比较的组对。
  3. 未限定比较的时间范围:没有指定只在研究末期(最后一个时间点)做组间比较,函数会尝试在整个x轴范围匹配组,进而出现NA值触发报错。
修正后的代码
# 获取研究的最后一个时间点(自动适配你的数据)
last_week <- max(weightsFile$Weeks)

# 修正比较组的格式:列表中每个元素是一组要比较的组名
my_comparisons <- list(c("Chow Male", "HFD Male"))

# 绘图:折线和误差棒用汇总数据,显著性检验用原始数据的末期子集
ggplot(weightsFile_stats, aes(x=Weeks, y=Weight, group=Diet_Sex, colour=Diet_Sex)) + 
  geom_errorbar(aes(ymin=Weight-se, ymax=Weight+se), width=.1) +
  ylab("Weight (g)") +
  xlab("Weeks") +
  guides(color = guide_legend(title = "Groups")) +
  geom_line() +
  geom_point() +
  scale_color_manual(values =c("#669bbc", "#c1121f", "#003049", "#780000")) + 
  # 添加末期组间显著性标记
  stat_compare_means(
    data = subset(weightsFile, Weeks == last_week),  # 用原始数据的末期子集
    aes(group = Diet_Sex),
    method = "t.test",  # 显式指定t检验(适配你确认的正态分布)
    label = "p.signif",
    comparisons = my_comparisons,
    x = last_week,  # 将标记放在最后一个时间点的位置
    tip.length = 0.01  # 调整显著性连线的长度
  )
额外说明
  • 如果需要添加多组比较,只需在my_comparisons中追加更多组对,例如:list(c("Chow Male", "HFD Male"), c("Chow Female", "HFD Female"))
  • 因为你已确认末期数据呈正态分布,显式指定method = "t.test"可以避免函数默认使用非参数检验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:20:07