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

如何在ggplot的stat_compare_means中自定义p值星号,将p<0.1设为*?

当然可以修改,用stat_compare_means的symnum.args参数就能自定义p值与星号的对应规则,具体操作如下:

自定义符号映射规则

你需要重新设置阈值区间和对应符号:

  • 阈值区间cutpoints设为c(0, 0.001, 0.01, 0.1, 1),对应四个区间:[0,0.001)、[0.001,0.01)、[0.01,0.1)、[0.1,1]
  • 对应符号symbols设为c("***", "**", "*", "ns"),刚好满足你要的:p<0.001显示***,p<0.01显示**,p<0.1显示*,p≥0.1显示ns的需求

修改后的完整代码

把symnum.args参数加入你原有的代码中即可:

stat_compare_means(
  aes(label = paste0('', after_stat(p.format), ' ', after_stat(p.signif))),
  label.y = 450, 
  vjust = 1, 
  method = "t.test", 
  ref.group = "0", 
  size=3,
  fontface="bold",
  symnum.args = list(
    cutpoints = c(0, 0.001, 0.01, 0.1, 1),
    symbols = c("***", "**", "*", "ns")
  )
)

关键说明

symnum.args是stat_compare_means传递给底层symnum()函数的参数集合,通过调整cutpoints(阈值分界点)和symbols(对应符号)的一一对应关系,就能完全自定义p值的符号显示逻辑,后续如果需要调整其他阈值规则,直接修改这两个参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:52:36