我是新手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())
没有任何效果。为什么会发生这种情况?我很好奇。我会很感激的想法。
当您指定时, 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)