我怎样才能让ggplot2为不同的几何图形给予一个单独的图例,它们都使用颜色来表示2个不同的变量。我想要3个图例,一个用于z
,a
,和b
,但是a和b似乎被合并成一个单独的图例,即使a和b表示不同的变量。我还希望能够控制每个图例中的颜色。
dat <- data.frame(
y = rnorm(200),
x = sample(c("A", "B"), 200, TRUE),
z = sample(100:200, 200, TRUE),
a = sample(c("male", "female"), 200, TRUE),
b = factor(sample(1:2, 200, TRUE))
)
ggplot(dat, aes(y = y, x = x)) +
geom_point(aes(color = a, size = z)) +
geom_boxplot(fill = NA, size=.75, aes(color=b)) +
scale_color_manual(values = c("#F8766D", "#00BFC4", "orange", "purple"))
3条答案
按热度按时间yks3o0rb1#
如果使用填充绘图符号,则可以将一个因子Map为填充,将另一个Map为颜色,然后将它们分为两个比例,从而形成图例。
wvmv3b1j2#
ggnewscale
使这变得非常简单:由reprex package(v0.3.0)于2020年1月8日创建
任何
scale_color
都可以照常使用,我选择scale_color_brewer是为了方便ia2d9nvy3#
在类似的情况下,图例捕获方法似乎是最通用的,尽管在@jennybryan 's上的这个特定方法更简单,而且可能是大多数人想要的。我在这里也记录了图例捕获方法。我第一次从@桑迪Muspratt HERE学习这个方法。