当你把color="darkgrey"
外部aes
, ggplot 从字面上看意味着该线应该是彩色的"darkgrey"
。但是当你把color="darkgrey"
inside aes
,ggplot 认为这意味着您要将颜色映射到变量。在这种情况下,该变量只有一个值:“darkgrey”。但不是这个颜色"darkgrey"
。它只是一个字符串。你可以随意称呼它。 ggplot 选择的颜色将基于默认调色板。当您希望为变量的不同级别使用不同的颜色时,将颜色映射到变量。
例如,看看下面的示例中会发生什么。颜色是从 ggplot 的默认调色板中选择的,并且完全独立于我们使用的名称colour
在每次通话中geom_line
。当您具有具有三种不同独特值的任何色彩审美时,您将获得相同的三种颜色:
library(ggplot2)
theme_set(theme_classic())
ggplot(mtcars) +
geom_line(aes(mpg, wt, colour="green")) +
geom_line(aes(mpg, wt - 1, colour="blue")) +
geom_line(aes(mpg, wt + 1, colour="star trek"))
但现在我们把颜色放在外面aes
所以它们是按字面意思理解的,我们注释掉第三行,因为如果我们不使用有效的颜色,就会导致错误。
ggplot(mtcars) +
geom_line(aes(mpg, wt), colour="green") +
geom_line(aes(mpg, wt - 1), colour="blue") #+
#geom_line(aes(mpg, wt + 1), colour="star trek")
请注意,如果我们将颜色映射到实际的列mtcars
(具有三个唯一级别的),我们得到与第一个示例相同的三种颜色,但现在它们映射到数据的实际特征:
ggplot(mtcars) +
geom_line(aes(mpg, wt, colour=factor(cyl)))
最后,如果我们想将这些映射的颜色设置为不同的值该怎么办:
ggplot(mtcars) +
geom_line(aes(mpg, wt, colour=factor(cyl))) +
scale_colour_manual(values=c("purple", hcl(150,100,80), rgb(0.9,0.5,0.3)))