如何用stat_poly_eq移除p值等号并设置有效数字?
解决stat_poly_eq的R²和p值格式优化问题
问题1:移除p值中的等号,仅保留小于号
stat_poly_eq提供了p.value.format参数,可自定义p值的显示格式。若希望所有p值以<呈现,直接设置格式化函数即可;若需仅在p值小于特定阈值(如0.001)时显示<,可通过条件判断实现。
问题2:设置3位有效数字
使用rr.digits参数控制R²的有效数字位数,p.digits控制p值的有效数字位数,两者均设为3即可满足需求。
修正后的完整代码
data(mtcars) ggplot(data=mtcars, aes(x=mpg,y=hp)) + geom_point() + geom_smooth(method = "lm", formula = y ~ x, se=TRUE, color="black") + stat_poly_eq( formula = y ~ x, aes(label = paste(..rr.label.., ..p.value.label.., sep = "*`,`~")), parse = TRUE, label.x.npc = "right", size=8, # 设置R²和p值的有效数字为3位 rr.digits = 3, p.digits = 3, # 自定义p值格式,仅保留小于号 p.value.format = function(x) sprintf("p < %.3g", x) )
补充说明
- 若需区分p值大小显示格式(如p<0.001时显示
<,否则显示=),可修改p.value.format为:
p.value.format = function(x) { if (x < 0.001) { sprintf("p < %.3g", x) } else { sprintf("p = %.3g", x) } }
- 原代码存在语法错误(
stat_poly_eq多了一个闭合括号),已在修正代码中移除。
内容的提问来源于stack exchange,提问作者Cameron M
相关产品推荐
相关产品推荐

