如何使用ggplot2绘制符合要求的gamlss模型Worm plot残差图
R语言自定义绘制Worm plot残差图的实现方法
你当前使用childsds包的wormplot_gg输出的样式不符合预期,可以通过以下两种方式实现目标样式的残差图:
方法1:手动提取计算结果自定义绘图(灵活度最高,可完全匹配目标样式)
gamlss包的wp()函数支持返回所有绘图所需的计算数据,你可以直接提取后用ggplot2自定义绘制:
library(ggplot2) library(gamlss) # 模型拟合 Dados <- Orange Model <- gamlss(circumference~age, family=NO, data=Dados) # 提取Worm plot计算数据,不输出默认基础绘图 wp_res <- wp(Model, plot = FALSE) # 自定义绘图 ggplot(wp_res, aes(x = x, y = y)) + # 观测残差点 geom_point(size = 1.8, alpha = 0.7) + # 拟合worm曲线 geom_smooth(method = "loess", se = FALSE, color = "red", linewidth = 1) + # 95%置信区间边界线 geom_line(aes(y = lower), linetype = "dashed", color = "blue", linewidth = 0.8) + geom_line(aes(y = upper), linetype = "dashed", color = "blue", linewidth = 0.8) + # 零参考线 geom_hline(yintercept = 0, linetype = "solid", color = "gray40") + # 样式调整 labs(x = "理论正态分位数", y = "残差样本分位数") + theme_bw() + theme( panel.grid = element_blank(), axis.text = element_text(size = 10), axis.title = element_text(size = 12) )
你可以根据自己的需求修改点、线的颜色、大小、样式,完全匹配你想要的视觉效果。
方法2:调整wormplot_gg的参数
如果你不想自定义绘图逻辑,也可以直接修改wormplot_gg返回的ggplot对象,关闭多余元素:
library(childsds) wormplot_gg(m = Model) + theme_bw() + theme( # 移除默认分面的标题栏 strip.background = element_blank(), strip.text = element_blank(), # 移除网格线 panel.grid = element_blank() ) + # 调整坐标轴标题 labs(x = "理论正态分位数", y = "残差样本分位数")
内容的提问来源于stack exchange,提问作者user55546
相关产品推荐
相关产品推荐

