我想创建一个有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))
有什么建议吗?非常感谢你!
答案 0 :(得分:2)
您可以尝试此代码(未经测试):
plots <- mapply(arrangeGrob, list(p3, p1, p2, legend), bottom=c("A", "B", "C", ""), SIMPLIFY=FALSE)
do.call(grid.arrange, plots)