我想创建一个图形,其中有 3 个图(p1、p2、p3),标有“(A)”、“(B)”、“(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))
有什么建议吗?非常感谢!
最佳答案
您可以尝试此代码(未经测试):
plots <- mapply(arrangeGrob, list(p3, p1, p2, legend), bottom=c("A", "B", "C", ""), SIMPLIFY=FALSE)
do.call(grid.arrange, plots)
关于r - 向面板添加标签,包括 3 个图和一个图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33908098/