在 ggplot2 的 aes() 函数中使用颜色

wat*_*wer 4 r ggplot2

我是新手ggplot2。我试图了解如何使用ggplot. 我正在阅读 Wickham 的书,但仍在努力思考如何使用aes()函数。在一个相关的线程中,我们讨论了我们应该尽量避免在内部使用变量,aes()即“不要将常量放入其中aes()- 只将映射放入实际数据列”。

我的目标是观察 ggplots 的行为,当我们在内部使用颜色aes()进行标记(如 Wickham 的书中所述)并覆盖颜色以打印颜色时。

我从这个开始:

library(ggplot2)
data(mpg)
ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  geom_smooth(aes(colour = "loess"), method = "loess", se = FALSE) +
  geom_smooth(aes(colour = "lm"), method = "lm", se = FALSE) +
  labs(colour = "Method")
Run Code Online (Sandbox Code Playgroud)

这很好地绘制了图形并标记了它们。但是,我对使用的颜色不满意。所以,我再次尝试使用覆盖颜色:

windows()
ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  geom_smooth(aes(colour = "loess"), method = "loess", se = FALSE, color = "magenta") +
  geom_smooth(aes(colour = "lm"), method = "lm", se = FALSE, color = "red") +  
  labs(colour ="Method")
Run Code Online (Sandbox Code Playgroud)

我添加了 color = "red" ,我们可以看到labs()aes(color())没有任何效果。为什么会发生这种情况?我很好奇。我会很感激的想法。

use*_*500 7

当您指定时, aes() gg_plot 之外的颜色不会将颜色信息视为数据的一部分(并且会覆盖以前的信息),因此不再显示图例。

如果要指定自己的颜色并将颜色信息保留为“相关数据”而不是“显示信息”,则应添加一个scale_colour_manual()命令来指定图例颜色并将颜色属性保留在aes

ggplot(mpg, aes(displ, hwy)) +
    geom_point() +
    geom_smooth(aes(colour = "loess"), method = "loess", se = FALSE) +
    geom_smooth(aes(colour = "lm"), method = "lm", se = FALSE) +  
    labs(colour ="Method") + scale_colour_manual(values = c("loess" = "magenta", "lm" = "red"))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明