按组更改 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
中的 详细信息 。
我正在尝试绘制固定效应和随机因素之间的相互作用。 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
中的 详细信息 。