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

如何在R语言的ggstatsplot中去除科学计数法

移除ggstatsplot图表中的科学计数法

要关闭ggstatsplot生成图表里统计量、p值的科学计数法,可从顶部统计副标题和组间比较标注两部分分别处理:

1. 处理顶部统计副标题的科学计数法

ggstatsplot的核心绘图函数(如ggbetweenstats、ggwithinstats)支持通过results.subtitle参数自定义副标题内容,你可以手动格式化统计量和p值,强制禁用科学计数法:

方法1:自定义格式化函数(通用版)

# 加载所需包
library(ggstatsplot)
library(broom)

# 调用绘图函数时自定义副标题
ggbetweenstats(
  data = mtcars,
  x = am,
  y = mpg,
  results.subtitle = function(x) {
    # 提取检验结果的结构化数据
    tidy_res <- broom::tidy(x$stats)
    # 自动识别统计量和p值对应列
    stat_col <- names(tidy_res)[grepl("statistic", names(tidy_res))]
    p_col <- names(tidy_res)[grepl("p.value", names(tidy_res))]
    
    # 格式化数值:禁用科学计数法,保留3位小数
    stat_val <- format(tidy_res[[stat_col]], scientific = FALSE, digits = 3)
    p_val <- format(tidy_res[[p_col]], scientific = FALSE, digits = 3)
    
    # 拼接最终副标题文本
    paste0(x$test.name, ": ", stat_col, " = ", stat_val, ", p = ", p_val)
  }
)

方法2:全局禁用科学计数法(简单粗暴)

如果希望所有R输出都默认禁用科学计数法,可以设置全局选项,ggstatsplot的自动生成内容也会遵循该规则:

# 设置全局选项,强制优先使用普通数值格式(数值越大优先级越高)
options(scipen = 999)

# 正常调用ggstatsplot函数即可
ggbetweenstats(data = mtcars, x = am, y = mpg)

2. 处理组间比较标注的科学计数法

当开启pairwise.comparisons = TRUE时,组间比较的p值标注也可能出现科学计数法,可通过pairwise.annotation.args参数自定义标注格式:

ggbetweenstats(
  data = mtcars,
  x = am,
  y = mpg,
  pairwise.comparisons = TRUE, # 开启组间比较功能
  pairwise.annotation.args = list(
    # 自定义p值标注的格式化逻辑
    label = function(p) format(p, scientific = FALSE, digits = 3)
  )
)

注意事项

  • 对于极小的p值(如小于0.0001),禁用科学计数法后会显示为0.000,你可以根据需求调整digits参数的数值,或者改为显示p < 0.001这类简化形式。
  • 不同检验类型(t检验、Wilcoxon检验、方差分析等)的统计量名称不同,通用版的自定义函数会自动识别对应列,无需手动适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:07:50