gb <- read.csv('results-gradient-boosting.csv')
p <- ggplot(gb) + geom_point(aes(x = pred, y = y),alpha = 0.4, fill = 'darkgrey', size = 2) +
geom_line(aes(x = pred, y = pred,color = 'darkgrey'),size = 0.6) +
geom_line(aes(x = pred, y = pred + 3,color = I("darkgrey")), linetype = 'dashed',size = 0.6) +
geom_line(aes(x = pred, y = pred -3,color = 'darkgrey'),linetype = 'dashed',size = 0.6)
Run Code Online (Sandbox Code Playgroud)
我的代码在上面.我不知道为什么当我把颜色放在aes里面时,颜色变成了红色.但如果我把它放在aes之外,那是正确的.谢谢你的帮助!
当你把它放在color="darkgrey"
外面时aes
,ggplot从字面上理解它意味着该线应该是彩色的"darkgrey"
.但是当你放入color="darkgrey"
内部时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"))
Run Code Online (Sandbox Code Playgroud)
但是现在我们把颜色放在外面,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")
Run Code Online (Sandbox Code Playgroud)
请注意,如果我们将颜色映射到实际列mtcars
(具有三个唯一级别的列),我们将获得与第一个示例中相同的三种颜色,但现在它们将映射到数据的实际特征:
ggplot(mtcars) +
geom_line(aes(mpg, wt, colour=factor(cyl)))
Run Code Online (Sandbox Code Playgroud)
最后,如果我们想将这些映射的颜色设置为不同的值,该怎么办:
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)))
Run Code Online (Sandbox Code Playgroud)