如何在ggplot2中绘制置信边界以更清晰展示置信区间?
补充代码实现置信区间边界线绘制
没问题,我来帮你调整代码,让置信区间的边界线清晰显示出来。核心思路是先计算出置信区间的上下限,再用geom_line把这两条边界线画出来,和已有的回归线、预测区间虚线搭配,就能达到你想要的效果啦。
修改后的完整代码如下:
library(ggplot2) # 准备数据 x <- Allele <- c(4,4,5,5,5,7,9,11,11,11,13,14,15,15,16,17,17,19,19,19) y <- SR <- c(5.5,5.6,5.7,6,6.1,8,8,12,12.1,13,14,14,16,16.5,17,17, 17.1,18,19,20) D3S <- data.frame(Allele, SR) # 拟合线性模型 Mod <- lm(SR ~ Allele) # 同时计算置信区间和预测区间的上下限 conf.int <- predict(Mod, interval = "confidence") pred.int <- predict(Mod, interval = "prediction") # 合并所有数据到同一个数据框,并重命名预测区间列避免冲突 mydata <- cbind(D3S, conf.int, pred.int[, c("lwr", "upr")]) colnames(mydata)[5:6] <- c("pred_lwr", "pred_upr") # 绘制图形 p <- ggplot(mydata, aes(Allele, SR)) + geom_point(size=3) + # 回归线+置信区间填充(默认灰色) stat_smooth(method = lm, color="black", fill = "grey80") + # 添加置信区间的边界线,用比填充色深的灰色区分 geom_line(aes(y = lwr), color = "grey50", size=0.6) + geom_line(aes(y = upr), color = "grey50", size=0.6) + # 添加预测区间的虚线 geom_line(aes(y = pred_lwr), color = "black", linetype = "dashed", size=0.8) + geom_line(aes(y = pred_upr), color = "black", linetype = "dashed", size=0.8) + # 调整主题,去掉多余边框和网格 theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.line = element_line(colour = "black")) p
代码说明:
- 新增
conf.int计算置信区间上下限,合并数据时重命名预测区间列,避免列名冲突。 - 用
geom_line画出置信区间的边界线,选择比填充色深的灰色(grey50),既和填充区域呼应,又能让边界线清晰可见。 - 保留了你原本的预测区间虚线和回归线设置,整体视觉风格和示例图一致。
内容的提问来源于stack exchange,提问作者Reza




