ggplot2填充和颜色映射图例

时间:2018-11-11 21:43:23

标签: r ggplot2

我有一个带有四个变量的示例数据框,我正在尝试将h变量映射到fill,将s变量映射到shape。由于我的s变量只能接受两个值(“ f”或“ u”),因此我想使用geom_point 24和21,它们可以接受fillcolour参数。

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))

colours controlled by fill

我无法使图例显示彩色键,因为图例键的颜色映射到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))

colours controlled by colour

传说用彩色键显示,但是我在情节上的黑色轮廓消失了。

如果我同时将fillcolour用于fill,是否有任何方法可以选择图例键(colourgeom_point)上映射的内容?

1 个答案:

答案 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

fill mapped to legend