changing ggplot factor colors?
我注意到在这里Box和胡须绘制了电话:
1 | p + geom_boxplot(aes(fill = factor(cyl))) |
生成明亮的红色/绿色/蓝色用于箱形图填充,而:
1 | p + geom_boxplot(aes(fill = factor(vs))) |
产生鲜明的浅绿色/红色。 在我的数据中,我得到了第二组颜色,但是想要第一组颜色(例如
1 | p + geom_boxplot(aes(fill = factor(cyl))) |
什么控制ggplot使用哪种颜色以及如何更改它?
谢谢
默认颜色是色轮周围均匀分布的色调。您可以从此处检查如何生成。
您可以将
1 | p + scale_fill_manual(values=c("#F8766D","#00BA38")) |
在这里,我使用了
另外,您也可以使用其他调色板:
1 | p + scale_fill_brewer(palette="Set1") |
要找到调色板中的颜色,您可以执行以下操作:
1 2 | require(RColorBrewer) brewer.pal(9,"Set1") |
如果您有兴趣,请检查包装以了解调色板和其他选项。
编辑:@ user248237dfsf,正如我已经在顶部的链接中指出的那样,来自@Andrie的此函数显示生成的颜色:
1 2 3 4 5 6 7 8 9 10 | 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时,第一种颜色是相同的,但是第二种颜色是不同的。这是因为它会产生色彩均匀分布的颜色。如果要将
要验证这确实是事实,您可以执行以下操作:
1 2 3 4 5 | 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))) |
现在,如果您这样做:
1 2 3 4 5 | ggplot_build(p1)$data[[1]]$fill # [1]"#F8766D""#00BA38""#619CFF" ggplot_build(p2)$data[[1]]$fill # [1]"#F8766D""#00BFC4""#F8766D""#00BFC4""#F8766D" |
您会看到这些是使用
添加到以前的答案:
使用
1 2 3 4 | myColors <- c("#56ddc5","#ff3db7","#4699dd") ggplot(mtcars, aes(x=mpg, y=hp, col=as.factor(cyl))) + geom_point() + scale_color_manual(values=myColors) |