我有一个带有四个变量的示例数据框,我正在尝试将h
变量映射到fill
,将s
变量映射到shape
。由于我的s
变量只能接受两个值(“ f”或“ u”),因此我想使用geom_point
24和21,它们可以接受fill
和colour
参数。
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
用于fill
,是否有任何方法可以选择图例键(colour
或geom_point
)上映射的内容?
答案 0 :(得分:2)
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)) +
guides(fill=guide_legend(override.aes=list(shape=21)))
以上代码生成了该图-完全按照我的意愿,记入bdemarest