我试图在带有图例的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] 删除。
我来说两句