使用sjPlot的plot_model(type='pred')添加标题与实心误差线失败求助
问题与解决方案
问题背景
使用sjPlot包的plot_model()函数绘制type="pred"的预测图时,遇到两个问题:
- 直接传入
title参数触发报错 - 无法将误差线设置为实心样式
解决方案
1. 自定义标题(解决报错)
plot_model(type="pred")不支持直接通过title参数设置标题,需借助ggplot2的labs()或ggtitle()函数,对plot_model()返回的ggplot对象进行后续修改。
2. 修改误差线为实心
plot_model()生成的误差线默认是虚线,可通过修改ggplot对象的图层属性,将误差线的linetype设置为1(实心)。
修改后的完整代码
if (!require("pacman")) install.packages("pacman") pacman::p_load(ggplot2, sjPlot) update.packages(ask = FALSE) data(efc) # 构建分类变量 efc$sexdummy <- factor(ifelse(efc$c161sex == 1, "Sex_1", "Sex_2")) efc$carerrelation <- factor(ifelse(efc$e15relat == 1, "Child", ifelse(efc$e15relat == 2, "Partner", "Other"))) # 拟合模型 m2 <- glm(sexdummy ~ carerrelation, data = efc, family = "binomial") # 生成预测图并调整样式 p <- plot_model(m2, type="pred", show.values = TRUE, value.offset = .3, colors = "bw") # 添加自定义标题 p <- p + labs(title = "My title") # 将误差线改为实心(图层索引需根据实际情况调整,此处layers[[2]]为误差线图层) p$layers[[2]]$aes_params$linetype <- 1 # 显示图形 print(p)
说明
- 若误差线图层索引不是
2,可通过str(p$layers)查看图层结构,找到对应geom_errorbar的图层索引后替换。 - 该方法利用了
plot_model()返回ggplot对象的特性,通过ggplot2原生语法调整样式,避免了函数参数冲突问题。
内容的提问来源于stack exchange,提问作者canIchangethis
相关产品推荐
相关产品推荐

