如何在ggplot2中从预定义的颜色集中选择颜色

4
假设我有如下数据集:
set.seed(1)
dataset <- data.frame(x = sort(rnorm(100)), 
                      y = sort(rlnorm(100))+1:4, 
                      group=rep(letters[1:4], 25))

我想使用ggplot2创建一个图表。不手动选择颜色,而是使用预定义的颜色集Paired

ggplot(dataset, aes(x = x, colour = group)) + 
geom_line(aes(y=y)) + 
scale_colour_brewer(palette="Paired")

我理解的图形如下:组 ab 的数据点为两种蓝色,而组 cd 的数据点为两种绿色。

enter image description here

现在,假设我只想绘制与组 cd 相关的数据,并且我想使用两种绿色。如果我只是简单地执行以下操作:
ggplot(dataset[dataset$group %in% c("c", "d"),], aes(x = x, colour = group)) + 
geom_line(aes(y=y)) + 
scale_colour_brewer(palette="Paired")

这个函数会自动选择两种蓝色(如下图所示),因为它们在 Paired 调色板中排名第一。

enter image description here

所以我的问题是:当我使用 ggplot2 时,如何从预定义的颜色集中选择颜色?


2
你可以使用 scale_*_manual 方法,但需要传入从 brewer_pal 中选择的特定颜色子集。 - joran
2
不是完全相同,但这应该能给你一个想法:https://dev59.com/OGoy5IYBdhLWcg3wJKoq#8751004 - joran
1个回答

10
require(RColorBrewer)
ggplot(dataset[dataset$group %in% c("c", "d"),], aes(x = x, colour = group)) + 
  geom_line(aes(y=y)) + 
  scale_colour_manual(values = brewer.pal(4, "Paired")[3:4])

enter image description here

为了更可扩展的方法,将调色板全局定义在绘图代码之外。这样你就可以动态地将子集数据映射到相应的颜色。


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