按组更改 spj.glmer 协变量概率图的线条颜色和类型

Changing line colors and types of a spj.glmer probability plots of covariates by group

我正在尝试绘制固定效应和随机因素之间的相互作用。 sjPlot 似乎是一个很好的包,但我无法更改线型和颜色。我想将线条颜色更改为具有不同线条类型的灰度方案以区分组。我已经尝试了 geom.color 参数和 sjp.setTheme 函数,但到目前为止还没有得到想要的结果。

下面的示例代码展示了我最初的尝试,借鉴了 sjPlot 网站上的示例:

data(efc)

efc$hi_qol <- dicho(efc$quol_5)

efc$grp = as.factor(efc$e15relat)
  levels(x = efc$grp) <- get_labels(efc$e15relat)

mydf <- data.frame(hi_qol = efc$hi_qol,
                   sex = to_factor(efc$c161sex),
                   c12hour = efc$c12hour,
                   neg_c_7 = efc$neg_c_7,
                   grp = efc$grp)
fit <- glmer(hi_qol ~ sex + c12hour + neg_c_7 + (1 | grp),
              data = mydf, family = binomial("logit"))

sjp.glmer(fit, type="ri.slope", facet.grid=F, vars="neg_c_7")

要更改线条颜色,我尝试设置 geom.colors="black",但似乎没有任何作用。

sjp.glmer(fit, type="ri.slope", facet.grid=F, geom.colors="black", vars="neg_c_7")

接下来我尝试更改 sjPlot 使用的主题来更改线型,但这也没有用。

sjp.setTheme(geom.linetype = c(1:8))
sjp.glmer(fit, type="ri.slope", facet.grid=F, vars="neg_c_7")

我是不是遗漏了一些明显的东西,或者更改线型和颜色是否更复杂?

我不确定如何使用 sjplot 执行此操作,但您可以使用 interaction.plot 函数生成绘图并添加 col= c(...) 以更改线条的颜色。

interaction.plot(factor, factor, fit, .. col = c("red","blue"))

sjPlot 包不支持更改线型 - 仅支持颜色。线型美学当前未由 sjp 函数映射。但是,您可以访问用于绘图的数据并创建您自己的交互图:

library(ggplot2)
library(sjmisc)
data(efc)
# create binary response
y <- ifelse(efc$neg_c_7 < median(stats::na.omit(efc$neg_c_7)), 0, 1)
# create data frame for fitted model
mydf <- data.frame(y = as.factor(y),
sex = as.factor(efc$c161sex),
barthel = as.numeric(efc$barthtot))
# fit model
fit <- glm(y ~ sex * barthel, data = mydf, family = binomial(link = "logit"))

p <- sjp.int(fit, geom.colors = "gs")
ggplot(p$data.list[[1]], aes(x = x, y = y, linetype = grp)) + geom_line()

更改交互图的颜色适用于 geom.colors 参数,请参阅 ?sjp.grpfrq 中的 详细信息