Place Annotation at Center of Plot with ggplot2

2019-02-23 18:29发布

问题:

I'd like to place an annotation at the center of a several ggplot objects.

I've researched and found a few similar questions such as here: Relative positioning of geom_text in ggplot2?

So far, the only answer I've found is to manipulate the absolute range (e.g. ",y = ymax/2").

I'd like to add the annotation layer in a loop, prior to printing to .pdf. I can place the annotation in the corners by using +/- Inf, as follows:

plot.list<-list()
g<- qplot(1,1)

plot.list[[length(plot.list)+1]]<-g
plot.list[[length(plot.list)+1]]<-g

pdf("MyReport.pdf"
    ,width = 14
    ,height=8.5
    ,paper="a4r")
for(i in 1:length(plot.list)){
  print(plot.list[[i]]+
          annotate("text",x=Inf,y=Inf,hjust=1,vjust=1
                   ,label="PLEASE DO NOT DISTRIBUTE"
                   ,fontface="bold",color="darkred",alpha=0.3))
}
dev.off()

How can I place the annotation at the center, rather than the corner?

回答1:

library(grid) # for textGrob

qplot(1,1) +
    annotation_custom(grid::textGrob("there"), 
                      xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) 



标签: r ggplot2 gtable