默认 colored颜色 是 colored颜色 轮周围均匀分布的色调.您可以判断这是如何从here生成的.
您可以将scale_fill_manual
与这些 colored颜色 搭配使用:
p + scale_fill_manual(values=c("#F8766D", "#00BA38"))
在这里,我使用cyl
中的ggplot_build(p)$data
来获得 colored颜色 .
或者,您也可以使用其他调色板,如:
p + scale_fill_brewer(palette="Set1")
要找到调色板中的 colored颜色 ,可以执行以下操作:
require(RColorBrewer)
brewer.pal(9, "Set1")
如果你感兴趣的话,可以查看软件包,了解调色板和其他选项.
Edit:@user248237dfsf,正如我already在顶部的链接中指出的那样,@Andrie的这个函数显示生成的 colored颜色 :
ggplotColours <- function(n=6, h=c(0, 360) +15){
if ((diff(h)%%360) < 1) h[2] <- h[2] - 360/n
hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65)
}
> ggplotColours(2)
# [1] "#F8766D" "#00BFC4"
> ggplotColours(3)
# [1] "#F8766D" "#00BA38" "#619CFF"
如果你观察生成的两种 colored颜色 ,当n=2和n=3时,第一种 colored颜色 是相同的,但第二种 colored颜色 不相同.这是因为它能产生evenly spaced种 colored颜色 .如果你想用cyl
的 colored颜色 表示vs
,那么你必须设置scale_fill_manual
,并使用这个函数中n=3生成的 colored颜色 .
要验证这确实是正在发生的事情,您可以做:
p1 <- ggplot(mtcars, aes(factor(cyl), mpg)) +
geom_boxplot(aes(fill = factor(cyl)))
p2 <- ggplot(mtcars, aes(factor(cyl), mpg)) +
geom_boxplot(aes(fill = factor(vs)))
现在,如果你这样做:
ggplot_build(p1)$data[[1]]$fill
# [1] "#F8766D" "#00BA38" "#619CFF"
ggplot_build(p2)$data[[1]]$fill
# [1] "#F8766D" "#00BFC4" "#F8766D" "#00BFC4" "#F8766D"
你可以看到,这些是使用ggplotColours
生成的 colored颜色 ,差异的原因也很明显.我希望这有帮助.