R语言回归图中如何正确显示P<0.05的斜体表达式
解决R回归图中P值小于0.05时的显示格式问题
懂啦!你想要的效果是:当P值小于0.05时,回归图图例里显示斜体的P<0.05,而不是现在的P=<0.05。问题出在之前统一用了等于号来构建表达式,我们可以通过分情况生成对应表达式来解决这个问题,下面是修改后的完整代码:
DF <- data.frame(X = c(1, 2, 3, 4, 5, 6, 7), Y = c(1.5, 2.1, 1.2, 4.4, 1, 6.5, 8.4)) plot(Y ~ X, data = DF) # 添加回归线 regline <- lm(Y ~ X, data = DF) abline(regline) # 获取统计量 summary(regline) # 获取调整R² R2 <- summary(regline)$adj.r.squared # 获取P值(保留原始数值,不提前转成字符串) P <- summary(regline)$coefficients[2,4] # 绘制R²和P值 r2p = vector('expression', 2) # 处理R²的显示 r2p[1] = substitute(expression(italic(R)^2 == RSQ), list(RSQ = format(R2, dig = 2)))[2] # 分情况构建P值的表达式 if(P < 0.05){ r2p[2] = expression(italic(P) < 0.05) } else { r2p[2] = substitute(expression(italic(P) == PVALUE), list(PVALUE = format(P, digits = 2)))[2] } legend('topleft', legend = r2p, bty = 'n', y.intersp = 1.3)
关键改动说明:
- 不再提前把P值转成带
<0.05的字符串,而是保留原始数值型P值,方便后续进行条件判断 - 针对P值大小分情况构建表达式:
- 当P<0.05时,直接生成
expression(italic(P) < 0.05),这样就能显示斜体P加上小于号的格式 - 当P≥0.05时,还是用原来的方式生成带等于号的表达式,显示具体的P值
- 当P<0.05时,直接生成
这样运行代码后,图例里的P值显示就完全符合你的需求啦~
内容的提问来源于stack exchange,提问作者owl
相关产品推荐
相关产品推荐

