在ggplot2中,从RColorBrewer调色板中选择单个颜色作为scale_colour_manual()值

6

使用 scale_colour_manual(),可以从 RColorBrewer 中选择特定颜色作为颜色值吗?

例如,在以下代码中:

scale_colour_manual(breaks=c("A","B","C","D","E"), 
    values=c("green","orange","blue","pink","yellow")) 

我想使用调色板scale_colour_brewer(type = "qual", palette = 7)中的第一种颜色,而不是“green”,然后使用调色板scale_colour_brewer(type = "qual", palette = 2)中的第四种颜色,而不是“orange”,以此类推。

2个回答

19

我经常做以下事情,

library(RColorBrewer)
my_palette = c(brewer.pal(5, "Set1")[c(1,3,4,5)], brewer.pal(5, "Pastel1")[c(2,5,1,3)])
#grid::grid.raster(my_palette, int=F)

scale_colour_discrete = function(...) scale_colour_manual(..., values = palette())

dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
(p <- qplot(carat, price, data = dsamp, colour = clarity)) # default palette

palette(my_palette)
p # custom colors

这看起来很不错,Batiste,但我很难将这个想法整合到我的代码中。我应该使用“scale_colour_discrete = function(...) scale_colour_manual(..., values = palette())”代替“scale_colour_manual(breaks=c("r","á/b","ő/é","w/s (0.3)","w/s (0.2)"), values=c("green","orange","blue","pink","yellow"))”吗? - Lucien S.
2
随意尝试并使用最适合您的内容。想法是定义自己首选颜色的向量,并将它们作为值提供给scale_colour_manual。我使用palette()技巧,以便我的代码可以运行,无论我是否忘记在脚本中包含自定义颜色。 - baptiste

0

一个简单的解决方案,而不需要创建额外的函数,是使用十六进制代码。如果您使用RcolorBrewer网站,每个调色板颜色都有一个。 例如:

scale_color_manual(values=c("#1f78b4","#a6cee3","#fc8d62","#e41a1c"))

按照您其他ggplot2层所需的顺序使用代码。这样,您可以从不同的RcolorBrewer调色板中挑选和组合颜色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接