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

如何用stat_compare_means设置ggplot斜体p值:保留3位小数且p<0.001特殊显示

在ggplot2图表中自定义格式化p值

要实现你需要的p值显示效果,可以自定义一个p值格式化函数,结合sprintf处理小数位数,同时用HTML标签实现斜体的"p",再把这个函数传给stat_compare_means的label参数。具体代码如下:

library(ggplot2)
library(ggpubr)

# 自定义p值格式化函数
format_p_val <- function(p) {
  if (p < 0.001) {
    "<i>p</i> < 0.001"
  } else {
    sprintf("<i>p</i> = %.3f", p)
  }
}

# 绘制带自定义p值的箱线图
ggboxplot(ToothGrowth, x = "dose", y = "len") +
  stat_compare_means(label = function(x) format_p_val(x$p.format))

关键细节说明:

  • 用if判断处理p<0.001的特殊情况,返回带斜体p的<i>p</i> < 0.001,ggpubr支持解析HTML标签来渲染斜体效果。
  • 对于p≥0.001的情况,sprintf("<i>p</i> = %.3f", p)中的%.3f是sprintf的格式化语法,用来指定保留3位小数。
  • 在stat_compare_means中,label参数接受自定义函数,该函数会接收包含统计结果的列表,我们从中提取p.format(计算得到的p值)传入自定义格式化函数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:40:41