为多个数据集创建ggplot2图例

索斯滕

我试图在带有图例的ggplot中以灰色显示背景数据。我的目的是在图例中包括灰色数据点,或者用手动标题制作第二个图例。但是,我没有做这两个中的任何一个。我的数据格式很长。

require(ggplot2)

xx<-data.frame(observation="all cats",x=1:2,y=1:2)
yy<-data.frame(observation=c("red cats","blue cats"),x=3:4,y=3:4)

g<-ggplot() + 
  geom_point(aes(x,y, colour=factor(observation)), colour="grey60", size=5, data=xx) +
  geom_point(aes(x,y, colour=factor(observation)), size=5, data=yy) + 
  scale_color_discrete(name = "ltitle") 

g

在此处输入图片说明

我尝试将data.frames与合并rbind.data.frame,这产生了一个不错的图例,但随后我无法将背景数据着色为灰色并同时保持ggplot颜色。

我还意识到这可以解决问题:

g<-ggplot(aes(x,y, colour=factor(observation)), colour="grey60", data=xx) + 
  geom_point(size=5) +
  geom_point(aes(x,y, colour=factor(observation)), size=5, data=yy) + 
  scale_color_discrete(name = "ltitle") 
g

但是我不能这样做,因为我正在使用一个函数,该函数之前会创建一个复杂的空图,然后在其中添加geom_points

林正

假设您的图没有需要填充参数的其他几何图形,以下是一种解决方法,该方法可修复背景数据geom_point的颜色而不影响其他geom_point层:

g <- ggplot() + 
  geom_point(aes(x, y, 
                 fill = "label"),                              # key change 1
             shape = 21,                                       # key change 2
             color = "grey50", size = 5, 
             data = xx) +
  geom_point(aes(x, y, colour = factor(observation)), size = 5, data = yy) + 
  scale_color_discrete(name = "ltitle") +
  scale_fill_manual(name = "", values = c("label" = "grey50")) # key change 3
g

shape = 21为您提供一个看起来像默认圆点的形状,但除了color参数外,还接受一个fill参数。然后,您可以将xxgeom_point图层的填充设置为灰色scale_fill_manual()(这将创建填充图例),而保留color = "grey50"在外面aes()(这不会添加到颜色图例中)。

yygeom_point图层的色标不受此影响。

情节

ps刚意识到我使用了“ grey50”而不是“ grey60” ...但是其他所有内容仍然适用。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章