我正在尝试使用ggplot2
and插入一个图annotation_custom
(该图实际上是我用来替换图例的地图)。但是,我也facet_wrap
用于生成多个面板,但是当与 一起使用时annotation_custom
,这会重现每个方面的图。有没有一种简单的方法只插入一次绘图,最好是在绘图区域之外?
这是一个简短的例子:
#Generate fake data
set.seed(9)
df=data.frame(x=rnorm(100),y=rnorm(100),facets=rep(letters[1:2]),
colors=rep(c("red","blue"),each=50))
#Create base plot
p=ggplot(df,aes(x,y,col=colors))+geom_point()+facet_wrap(~facets)
#Create plot to replace legend
legend.plot=ggplotGrob(
ggplot(data=data.frame(colors=c("red","blue"),x=c(1,1),y=c(1,2)),
aes(x,y,shape=colors,col=colors))+geom_point(size=16)+
theme(legend.position="none") )
#Insert plot using annotation_custom
p+annotation_custom(legend.plot)+theme(legend.position="none")
#this puts plot on each facet!
这会产生以下情节: 当我想要更多类似的东西时: 感谢任何帮助。谢谢!