如何在ggplot2绘制的线性回归分面图中标注回归系数与p值
你已经完成了回归系数和p值的预计算,只需要将计算结果和分面变量做匹配,用geom_text()层添加标注即可,完整可运行的修改后代码如下:
library(olsrr) library(tidyverse) library(reshape2) data(surgical) ## 回归计算 pre1 <- setdiff(names(surgical), c("y", "pindex")) mod_dres <- NULL for (j in pre1) { model <- lm(y ~ pindex + get(j), data = surgical) bmodel <- broom::tidy(model) bmodel$term[3] <- j bmodel <- bmodel[3,] mod_dres <- rbind(mod_dres, bmodel) } ### 新增:处理回归结果生成标注文本 mod_dres <- mod_dres %>% mutate( coef_label = round(estimate, 2), p_label = case_when( p.value < 0.001 ~ "p < 0.001", TRUE ~ paste0("p = ", round(p.value, 3)) ), label = paste0("β = ", coef_label, "\n", p_label), variable = term # 匹配绘图数据集的分面字段 ) ## 重塑绘图数据集 pre1.plot = melt(surgical[,-c(2)], id.vars='y') %>% dplyr::filter(variable %in% mod_dres$term) ## 绘图 ggplot(pre1.plot) + geom_jitter(aes(value,y, colour=variable), colour="darkorange", size = 3) + geom_smooth(aes(value,y, colour=variable), method=lm, se=FALSE, colour="darkorange") + # 新增:添加回归系数和p值标注 geom_text(data = mod_dres, aes(x = Inf, y = Inf, label = label), hjust = 1.1, vjust = 1.1, size = 4, fontface = "bold") + theme_minimal() + theme(axis.title = element_text(size = 16,face="bold", colour = "black"), axis.text = element_text(size = 16,face="bold", colour = "black"), axis.line = element_line(colour='black'), axis.ticks = element_line(colour='black'), plot.title = element_text(hjust = 0.5,size=18,face="bold"), legend.position = "bottom", legend.title = element_text(color = "Black", size = 9, face = "bold"), legend.text=element_text(color = "Black", size = 9, face = "bold"), strip.text.x = element_text(size = 16,face="bold", colour = "black")) + labs(x = "value",title = " ") + facet_wrap(~variable, scales="free_x",nrow = 2, ncol = 4) + theme(panel.background = element_rect(fill = "white", colour = "black"), strip.background = element_rect(fill = "white", colour = "black"), legend.key = element_blank(), legend.title = element_blank())
补充说明:
- 标注默认放在每个分面的右上角,如需调整位置,可修改
hjust、vjust参数,要放在左上角可将x改为-Inf,同时设置hjust = -0.1 - 系数、p值的小数位数和显示格式,可根据需求修改
mutate部分的格式化规则
内容的提问来源于stack exchange,提问作者adR
相关产品推荐
相关产品推荐

