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

如何在ggplot生成的图中添加显著性标注(含数据与p值)

给ggplot图表添加显著性标注的实现方案

步骤1:准备所需工具包

我们需要使用ggsignif包绘制显著性标注线,同时用tidyr处理数据格式,先安装并加载这些包:

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

步骤2:转换显著性数据格式

你的df2是宽格式数据,需要转成长格式并拆分对比组别,才能被ggsignif识别:

# 将宽格式p值数据转为长格式
df_p <- pivot_longer(df2, cols = -Accession, names_to = "comparison", values_to = "p_value")
# 拆分对比组名称为两个单独组别
df_p <- separate(df_p, comparison, into = c("group1", "group2"), sep = "_")

步骤3:修改ggplot代码添加显著性标注

基于你原有的绘图代码,加入geom_signif层实现标注效果,同时调整细节提升图表可读性:

ggplot(df, aes(x = group, y = median, color = Names)) +
  geom_point(size = 3) +
  geom_line(aes(group = Names), color = "black", linetype="dashed") +
  # 给误差棒添加宽度,避免与散点重叠
  geom_errorbar(aes(ymin = median - SD, ymax = median + SD), width = 0.2) +
  scale_x_discrete(limits = c("First", "Second", "Third")) +
  # 添加显著性标注线与p值
  geom_signif(
    data = df_p,
    # 定义对比组别、标注内容和标注位置
    aes(xmin = group1, xmax = group2, annotations = p_value, y_position = c(19, 17.5, 11)),
    tip_length = 0.01, # 控制标注线短横线的长度
    vjust = 0.5, # 调整标注文本的垂直位置
    manual = TRUE # 指定手动模式,使用自定义的对比和位置
  ) +
  # 调整y轴范围,确保标注完整显示
  ylim(9, 20)

可选:用星号替代p值(符合学术图表习惯)

如果需要用星号表示显著性水平而非直接显示p值,可以先处理df_p生成标注标签:

library(dplyr)
# 根据p值生成星号标注
df_p$sig_label <- case_when(
  df_p$p_value < 0.001 ~ "***",
  df_p$p_value < 0.01 ~ "**",
  df_p$p_value < 0.05 ~ "*",
  TRUE ~ "ns" # 无显著性
)

# 修改geom_signif使用星号标注
ggplot(df, aes(x = group, y = median, color = Names)) +
  geom_point(size = 3) +
  geom_line(aes(group = Names), color = "black", linetype="dashed") +
  geom_errorbar(aes(ymin = median - SD, ymax = median + SD), width = 0.2) +
  scale_x_discrete(limits = c("First", "Second", "Third")) +
  geom_signif(
    data = df_p,
    aes(xmin = group1, xmax = group2, annotations = sig_label, y_position = c(19, 17.5, 11)),
    tip_length = 0.01,
    vjust = 0.5,
    manual = TRUE
  ) +
  ylim(9, 20)

说明:y_position的数值需要根据你的实际数据调整,确保标注线位于误差棒上方且不重叠;如果数据范围变化,对应调整ylim的数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:07:49