如何在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
相关产品推荐
相关产品推荐

