我有一个包含四个变量的样本数据框,我正在尝试将h
变量映射到fill
,将s
变量映射到shape
。由于我的s
变量只能取两个值('f'或'u'),因此我想使用geom_point
24和21,这可以使用fill
和color
参数。
library(ggplot2)
h <- c(1,2,3,4,5)
x <- seq(1:5)
y <- c(1,3,3,5,5)
s <- c(rep('f',3),rep('u',2))
dt <- data.frame(h,x,y,s)
理想情况下,我的
geom_point
应该有黑色轮廓和彩色fill
。我可以使用以下代码绘制此图,并生成此图:ggplot(dt, aes(x=y, y=x)) +
geom_point(mapping = aes(fill = factor(h), shape = s), size = 5) +
scale_shape_manual(values = c(24, 21))
由于图例键的颜色映射到 colour
而不是 fill
,因此我无法显示彩色键。
如果我将我的 geom_point
更改为 19 和 17,并将我的 h
变量映射为 colour
,则可以获得带有颜色的图例键:
ggplot(dt, aes(x=y, y=x)) +
geom_point(mapping = aes(colour = factor(h), shape = s), size = 5) +
scale_shape_manual(values = c(19, 17))
图例显示为彩色键,但是绘图中我的点的黑色轮廓消失了。
如果我同时使用fill
和colour
来绘制geom_point
,有没有办法选择将什么映射到图例键上(fill
或colour
)?
guides(fill=guide_legend(override.aes=list(shape=21)))
。然后,填充颜色将在填充图例中正确显示。我认为这可能是图例的意外行为。 - bdemarest