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

如何在ggplot箱线图中将极小p值替换为‘p < 0.001’并格式化

修改ggpubr箱线图的p值显示格式

核心修改方案

要实现自定义p值显示规则(p<0.001时显示<0.001,否则保留三位小数),需要通过自定义格式化函数替换stat_compare_means的默认显示逻辑:

  • 编写一个p值格式化函数,根据阈值判断返回对应文本
  • 在stat_compare_means中调用该函数生成显示标签

修改后的完整代码

library(ggpubr)   

# 自定义p值格式化函数
format_pval <- function(p) {
  ifelse(p < 0.001, "<0.001", sprintf("%.3f", p))
}

fig_boxplot <- function(df, var, group, title = " "){
  
  temp <- aggregate(df[[group]][!is.na(df[[var]])],
                    by = list(df[[group]][!is.na(df[[var]])]), length)
  colnames(temp) <- c("sample.group","n")
  temp$new_name <- paste0(temp$sample.group, "\n(n = ", temp$n, ")")
  df <- merge(df,
              temp[,c("sample.group","new_name")],
              by = "sample.group", all.x=F)
  my_comparisons <- list( unique(df$new_name))
  
  g1 <- ggplot(data=df, aes(x=new_name, y=.data[[var]], color=new_name)) + 
    geom_boxplot() + 
    geom_jitter(width=0.2) +
    theme_minimal() + 
    theme(axis.ticks.x=element_blank(),
          axis.text.y = element_text(angle=90, hjust=0.5)) +
    labs(title=title) +
    # 替换默认p值显示为自定义格式化结果
    stat_compare_means(
      comparisons = my_comparisons,
      aes(label = format_pval(..p.adj..)),
      hjust = 0
    ) + 
    theme(plot.subtitle = element_text(hjust=0.5, face="bold")) +
    scale_color_manual(values=c("#666666", "#000000")) +
    theme(axis.title = element_blank(), 
          axis.text.y = element_text(angle=0)) +
    theme(legend.position = "none") + 
    coord_flip() + 
    theme(plot.margin=unit(c(0,0,0,0), "mm"))
  
  return(g1)
}

fig_boxplot(df, var = "CSF.WBC.RBC.ratio", group, title = "A) CSF-WBC / CSF-RBC")

关键修改说明

  1. 自定义格式化函数:format_pval函数通过ifelse判断p值,小于0.001时返回<0.001,否则用sprintf("%.3f", p)确保保留三位小数
  2. stat_compare_means调整:移除原有的label = "p.adj"参数,改用aes(label = format_pval(..p.adj..))直接处理校正后的p值(..p.adj..是stat_compare_means生成的内部变量,代表校正后的p值)
  3. ggplot映射优化:将df$new_name改为new_name,df[[var]]改为.data[[var]],符合ggplot的规范写法,避免潜在的作用域问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:22:08