我注意到,在这里箱和晶须绘制呼叫:
p + geom_boxplot(aes(fill = factor(cyl)))
产生明亮的红/绿/蓝三色的箱图填写,同时:
p + geom_boxplot(aes(fill = factor(vs)))
生成的颜色明显浅绿色/红色。 在我的数据,我得到了第二组的颜色,但想在第一组(像
p + geom_boxplot(aes(fill = factor(cyl)))
什么控制的颜色ggplot使用哪套以及如何改变呢?
谢谢
默认的颜色是均匀分布的在色轮的色彩。 您可以检查这是如何产生的,从这里 。
您可以使用scale_fill_manual
这些颜色:
p + scale_fill_manual(values=c("#F8766D", "#00BA38"))
在这里,我用ggplot_build(p)$data
从cyl
得到的颜色。
另外,您也可以使用另一种调色板以及像这样:
p + scale_fill_brewer(palette="Set1")
并找到在调色板上的颜色,你可以这样做:
require(RColorBrewer)
brewer.pal(9, "Set1")
检查包知道调色板和其他选项,如果你有兴趣。
编辑:@ user248237dfsf,因为我已经在顶部的链接中指出,从@Andrie此功能显示所产生的颜色:
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"
如果看一下产生的两种颜色,第一个是相同的,但是第二颜色是不一样的,当n = 2和n = 3。 这是因为它会产生均匀间隔的色调的色彩。 如果你想使用的颜色为cyl
为vs
,那么你就必须设置scale_fill_manual
并使用与此功能N = 3产生这些颜色。
为了验证这确实是发生了什么事,你可以这样做:
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
和差异的原因也是显而易见的。 我希望这有帮助。
添加到以前的答案:
当使用col
审美(而不是fill
),使用scale_color_manual
。 这是有用的geom_point()
myColors <- c("#56ddc5", "#ff3db7", "#4699dd")
ggplot(mtcars, aes(x=mpg, y=hp, col=as.factor(cyl))) +
geom_point() +
scale_color_manual(values=myColors)