lep*_*lep 5 r data-visualization ggplot2 gridextra
I\xc2\xb4m 尝试在页面中排列 4 个图,将图例放在底部中心
\n\n我用它来获取其中一个图的图例(因为它们对于四个图来说是相同的)
\n\n get_legend<-function(myggplot){\n tmp <- ggplot_gtable(ggplot_build(myggplot))\n leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")\n legend <- tmp$grobs[[leg]]\n return(legend)\n }\nRun Code Online (Sandbox Code Playgroud)\n\n然后,我从任何情节中得到图例
\n\n legend <- get_legend(p2)\nRun Code Online (Sandbox Code Playgroud)\n\n所以对于我使用的图:
\n\n tt <-grid.arrange(arrangeGrob(p6, p7, p8, p9, legend,\n nrow = 2, #\n left = textGrob("Mammalian species richness", rot = 90, vjust = 1, \n gp = gpar(fontsize = 12))))\nRun Code Online (Sandbox Code Playgroud)\n\n但我\xc2\xb4得到的是这样的:
\n\n\n\n如何将图例移动到中心按钮并具有 2 行 2 列? \ncommands nrow,ncol没有工作,因为我收到了错误消息,也没有类似的东西
tt <- tt + theme(legend.position ="bottom"). \nRun Code Online (Sandbox Code Playgroud)\n\n附:以防万一这个信息很重要,如果我尝试不放置任何图例,我可以根据需要将四个图放在网格中,但没有图例,所以,你知道这不利于出版。
\nlayout_matrix您可以使用in参数grid.arrange来进行更多控制。
一个可重现的例子,
library(ggplot2)
library(gridExtra)
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)
}
p <- ggplot()
p2 <- ggplot(mtcars, aes(mpg, wt, col=factor(am))) + geom_point()
legend <- get_legend(p2)
grid.arrange(p, p, p, p, legend,
layout_matrix=rbind(c(1,2,3), c(4,5,5)))
Run Code Online (Sandbox Code Playgroud)
哪个产生
或者也许你想要
grid.arrange(p, p ,p, p, legend,
layout_matrix=rbind(c(1,1,2,2,5), c(3,3,4,4,5)))
Run Code Online (Sandbox Code Playgroud)