【问题标题】:Change Color by Group with visreg and ggplot使用 visreg 和 ggplot 按组更改颜色
【发布时间】:2019-04-30 17:57:40
【问题描述】:

使用二元预测器运行逻辑回归后,当我尝试使用 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)。如您所见,这不是代码产生的。

【问题讨论】:

  • 一种选择可能是使用 ggplot_build(),它可以让您从回归中提取原始汇总数据。该文件将比 visreg 对象更容易操作。
  • @cardinal40 哎呀!我可以看到 ggplot_build 如何潜在地增加了很多灵活性,但看起来我必须使用它从头开始构建整个图表。我没有找到很多关于它使用的例子或材料。您是否足够熟悉它以快速轻松地将其应用到我提供的示例中?我也在寻找这个问题的长期解决方案,here 他们表示 Hadley Wickham 已经警告不要过度依赖 ggplot_build,因为它可能会被弃用。

标签: r ggplot2 colors visreg


【解决方案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 技巧,否则如果不从头开始重建情节,就没有办法做到这一点。

【讨论】:

    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 2011-07-07
    • 2018-07-10
    • 2021-10-20
    • 2019-04-17
    • 2013-02-14
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多