我试图在带有图例的ggplot中自动显示灰色的背景数据 . 我的目标是在图例中包含灰色数据点,或者制作带有手动 Headers 的第二个图例 . 但是我在做这两个中的任何一个时都失败了 . 我的数据格式很长 .
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
.
3 回答
假设您的绘图没有需要填充参数的其他geom,以下是一种解决方法,可以修复背景数据
geom_point
图层的颜色,而不会影响其他geom_point
图层:shape = 21
为您提供一个看起来像默认圆点的形状,但除了color参数外还接受填充参数 . 然后,您可以在scale_fill_manual()
中将xx的geom_point
图层填充设置为灰色(这会创建填充图例),而将color = "grey50"
设置在aes()
之外(这不会添加到颜色图例中) .yy的
geom_point
图层的色标不受任何影响 .附:刚刚意识到我使用了“grey50”而不是“grey60”......但其他一切仍然适用 . :)
一种解决方案是创建颜色矢量并将其传递给
scale_color_manual
.我提出了与Z.Lin完全相同的解决方案,但使用了
rbind.data.frame
的组合数据框 . 同样,它使用scale_colour_manual
和向量colors
指定颜色映射: