You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:10:04