向面板添加标签,包括3个图和一个图例

时间:2015-11-25 03:38:06

标签: r labels

我想创建一个有3个图(p1,p2,p3)的图,标有"(A)","(B)",&#34 ;(C)"和没有标签的传奇。但我的试验没有成功。你介意帮帮我吗?谢谢你的时间!

由于函数get_legend

,我从我的一个图中提取了图例
get_legend<-function(myggplot){
  tmp <- ggplot_gtable(ggplot_build(myggplot))
  leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
  legend <- tmp$grobs[[leg]]
  return(legend)
}
legend <- get_legend(p1)# Save the legend
p1 <- p1 + theme(legend.position="none")#  Remove the legend from the box plot

这是我写的最终数字的脚本,然而,它不起作用:

grid.arrange(p3, p1, p2, legend, labels=c("(A)", "(B)", "(C)", " "), ncol=4, widths=c(2, 2, 2, 0.8))

下面这个脚本有效,但不幸的是没有标记我的3个图:

grid.arrange(p3, p1, p2, legend, ncol=4, widths=c(2, 2, 2, 0.8))

3plots without labels and legend

有什么建议吗?非常感谢你!

1 个答案:

答案 0 :(得分:2)

您可以尝试此代码(未经测试):

plots <- mapply(arrangeGrob, list(p3, p1, p2, legend), bottom=c("A", "B", "C", ""), SIMPLIFY=FALSE)

do.call(grid.arrange, plots)