在plot_model中使用配色方案和图例标签

问题描述 投票:0回答:1

我想使用 sjPlot 中的plot_model 在 R 中绘制多级模型的结果,特别是为了说明交互效应。我想使用特定的配色方案,并且还想标记图例的三个级别(低、中、高)。但是,当我尝试执行这两件事时,阴影会恢复为默认配色方案。

这是我使用 merTools 数据集尝试过的可重现示例。

library(lme4)
library(sjPlot)
library(merTools)

colors<-c("red","darkred","pink")

m1 = lmer(mathach ~ ses + meanses + ses*meanses + (1|schid), data=hsb)

p1<-plot_model(m1, type="pred", terms= c("ses","meanses"), 
               colors= colors, legend.title = "Mean SES")+
  labs(y="SES", x="Mean SES", 
       linetype = "meanses") +
  scale_color_manual(labels = c("Low (-1 SD)", "Average", "High (+1 SD)"), values=colors) 
p1

这给我带来了消息“颜色比例已经存在。 添加另一个颜色比例,这将取代现有的比例。”

enter image description here

如果我省略了scale_color_manual代码,我会得到我想要的颜色,但不会得到我想要的图例标签。

enter image description here

r plot colors sjplot scale-color-manual
1个回答
0
投票

要为

color
fill
美学添加标签并应用颜色,请将
aesthetics = c("color", "fill")
添加到
scale_color_manual

使用基于

?lme4::lmer
中的默认示例的最小可重现示例:

library(lme4)
#> Loading required package: Matrix
library(sjPlot)
library(ggplot2)

colors <- c("red", "darkred", "pink")

sleepstudy$foo <- rep(LETTERS[1:3], each = 60)

m1 <- lmer(Reaction ~ Days + Days * foo + (Days | Subject), sleepstudy)

p1 <- plot_model(m1,
  type = "pred", terms = c("Days", "foo"), 
  colors = colors, legend.title = "Mean SES"
) +
  labs(
    y = "SES", x = "Mean SES",
    linetype = "meanses"
  ) +
  scale_color_manual(
    labels = c("Low (-1 SD)", "Average", "High (+1 SD)"), values = colors,
    aesthetics = c("color", "fill")
  )
#> Scale for colour is already present.
#> Adding another scale for colour, which will replace the existing scale.
p1

© www.soinside.com 2019 - 2024. All rights reserved.