改变ggplot因素颜色?(changing ggplot factor colors?)

2019-07-20 17:07发布

我注意到,在这里箱和晶须绘制呼叫:

p + geom_boxplot(aes(fill = factor(cyl)))

产生明亮的红/绿/蓝三色的箱图填写,同时:

p + geom_boxplot(aes(fill = factor(vs)))

生成的颜色明显浅绿色/红色。 在我的数据,我得到了第二组的颜色,但想在第一组(像

p + geom_boxplot(aes(fill = factor(cyl)))

什么控制的颜色ggplot使用哪套以及如何改变呢?

谢谢

Answer 1:

默认的颜色是均匀分布的在色轮的色彩。 您可以检查这是如何产生的,从这里

您可以使用scale_fill_manual这些颜色:

p + scale_fill_manual(values=c("#F8766D", "#00BA38"))

在这里,我用ggplot_build(p)$datacyl得到的颜色。

另外,您也可以使用另一种调色板以及像这样:

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。 这是因为它会产生均匀间隔的色调的色彩。 如果你想使用的颜色为cylvs ,那么你就必须设置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和差异的原因也是显而易见的。 我希望这有帮助。



Answer 2:

添加到以前的答案:

当使用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)



文章来源: changing ggplot factor colors?