使用visreg和ggplot按组更改颜色

时间:2019-04-30 17:57:41

标签: r ggplot2 colors visreg

使用二进制预测变量运行逻辑回归后,当我尝试使用visreg和ggplot绘制结果时,图例表明颜色已按组进行了更改,但在图形中未更改。

这里是使用mtcars数据说明问题的说明。

data(mtcars)
head(mtcars, 10)

仅有的两个二进制变量是vs和am,但需要将它们从数字转换为该图才能起作用。

mtcars$vs <- as.factor(mtcars$vs)
mtcars$am <- as.factor(mtcars$am)

运行模型。

logit1 <- glm(vs ~ am, data = mtcars, family = "binomial")

现在尝试使用visreg以及其他ggplot函数来绘制结果以自定义颜色和标签。

visreg(logit1, "am", scale = "response", gg = TRUE, rug = FALSE, by = "am", overlay=TRUE) + 
  scale_color_manual(values=c("#1b9e77", "#d95f02"), 
                     breaks=c(0, 1), 
                     labels=c("Zeros", "Ones"))

对于am = 1组,我将线条和阴影区域都设为橙色(#d95f02),对于am = 0组,我将线条和阴影区域都设为绿色(#1b9e77)。如您所见,这不是代码产生的。 enter image description here

1 个答案:

答案 0 :(得分:1)

visreg中没有任何功能可让您立即执行类似的操作。您当然可以通过以下方式更改颜色:

visreg(logit1, "am", scale = "response", gg = TRUE, rug = FALSE, by = "am", overlay=TRUE,
       fill.par=list(fill="#1b9e77"), line.par=list(col='#d95f02'))

但是您要描述的是构建一个完全不同的图:其中am的值映射到不同的颜色。这将涉及绘图所基于的完全不同的aes对象。除非有我不知道的惊人ggplot2技巧,否则,从头开始重建情节是没有办法的。