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

使用ggplot绘制箱线图时如何将p值替换为p<0.05、n.s.等自定义字符串

解决方案

你需要的效果完全可以通过stat_compare_means()的内置参数实现,不需要额外调用annotate()函数,操作方式如下:


实现说明

stat_compare_means()是ggpubr包提供的函数,使用前请先加载ggplot2和ggpubr两个依赖包。你只需要给函数配置两个核心参数即可:

  • label = "p.signif":指定显示内容为自定义显著性标记
  • symnum.args:自定义显著性阈值和对应显示文本
  • 额外配置hide.ns = FALSE,确保不显著的标注也正常显示(该参数默认值为TRUE,会自动隐藏n.s.标记)

完整可运行代码

# 加载依赖包
library(ggplot2)
library(ggpubr)

# 示例数据
df <- data.frame(group = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B"),
                 value = c(1:10))

# 绘图
ggplot(data = df,
       mapping = aes(x = group, y = value)) +
  geom_boxplot() +
  stat_compare_means(
    label = "p.signif",
    symnum.args = list(
      cutpoints = c(0, 0.05, Inf),
      symbols = c("p<0.05", "n.s.")
    ),
    hide.ns = FALSE,
    size = 4 # 可自行调整标注字体大小
  )

参数规则说明

symnum.args里的cutpoints按从小到大定义p值的区间切割点,symbols和区间一一对应:

  • p值落在(0, 0.05]区间时,显示p<0.05
  • p值落在(0.05, Inf]区间时,显示n.s.

该方式比手动调用annotate()更高效,不需要提前计算p值、手动调整标注位置,后续数据更新时标注也会自动同步修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 01:42:04