ggplot 图 P 值格式化
王诗翔 · 2021-03-08
ggpubr 包中的 stat_compare_means()
函数是非常常用于对 ggplot 图形添加统计比较结果的方法,近期有粉丝问到了如何对其展示的 P 值进行格式化,这里简要地做一个记录。
这里我们直接使用官方示例:
library(ggpubr)
#> Loading required package: ggplot2
data("ToothGrowth")
head(ToothGrowth)
#> len supp dose
#> 1 4.2 VC 0.5
#> 2 11.5 VC 0.5
#> 3 7.3 VC 0.5
#> 4 5.8 VC 0.5
#> 5 6.4 VC 0.5
#> 6 10.0 VC 0.5
# Two independent groups
# :::::::::::::::::::::::::::::::::::::::::::::::::
p <- ggboxplot(ToothGrowth,
x = "supp", y = "len",
color = "supp", palette = "npg", add = "jitter"
)
# Add p-value
p + stat_compare_means()
可以看到图中是以检验方法+P值的结果来展示 P 值的,那么该如何修改它呢?关键是修改函数中的 label
参数和掌握匿名变量 ..p.format..
,下面是一个简单的修改:
p + stat_compare_means(aes(label = paste0("P = ", round(as.numeric(..p.format..), 1))))
这里需要注意的是 ..p.format..
是一个字符串,如果我们需要修改它展示的数值位数,需要先进行转换。
进一步我们还可以根据运行 ?stat_compare_means
提供的说明修改 P 值的位置:
p + stat_compare_means(aes(label = paste0("P = ", round(as.numeric(..p.format..), 1))),
label.y = 33, label.x = 1.5
)
大家可以想一下为什么 label.x = 1.5
可以将标签移动到两组的中间?