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

如何让stat_compare_means在ggboxplot中显示精确p值而非近似值

解决方法

要让极小的p值显示精确值,核心是绕过stat_compare_means默认的p值格式化逻辑,自定义p值的显示格式。默认的label="p.format"会对极小p值做截断处理(比如p<0.001时显示<0.001),我们可以通过自定义标签函数输出精确值(比如科学计数法形式)。

修改后的完整代码

library(ggpubr)
data(ToothGrowth)
data_to_change <- which(ToothGrowth$dose==0.5)
ToothGrowth$len[data_to_change] <- ToothGrowth$len[data_to_change]-10

# 定义两两比较的组合(原代码缺失该部分)
my_comparisons <- list(c("0.5", "1"), c("1", "2"), c("0.5", "2"))

ggboxplot(ToothGrowth, x = "dose", y = "len",
          color = "dose", palette = "jco") +
  stat_compare_means(
    comparisons = my_comparisons,
    # 自定义标签函数:用科学计数法显示精确p值,可按需调整格式
    label = function(x) sprintf("p=%.3e", x$p),
    method = "t.test"
  )

关键说明

  • 把label参数替换为自定义函数,直接读取原始精确p值x$p,用sprintf格式化输出。
  • 若不想用科学计数法,可改成sprintf("p=%.6f", x$p)显示6位小数,但极小p值会显示为p=0.000000,不如科学计数法直观。
  • 原代码未定义my_comparisons,这里补上了常规的两两比较组合,你可根据实际需求调整对比组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:41:34