组合两个grob,其中一个使用grid.draw创建

时间:2018-12-12 12:23:47

标签: r ggplot2 gridview visualization grob

我正在尝试将两个图形对象(grob)组合到一个图上-其中一个是通过“标准ggplot()”调用创建的,另一个是在{{ 1}}对象(based on this thread)。

grid.draw()
  

gList(structure(list(wrapvp = structure(list(x = structure(0.5,class =“ unit”,valid.unit = 0L,unit =“ npc”)))中的错误:在“ gList”

reprex package(v0.2.1)于2018-12-12创建

显然,调用ggplot_gtable会导致library(ggplot2) library(grid) library(gridExtra) plot_gtable <- function(x) { grid::grid.draw(ggplot_gtable(ggplot_build(x))) } plot1 <- ggplot(mtcars, aes(mpg, wt)) + geom_point() plot2 <- plot_gtable(ggplot(mtcars, aes(mpg)) + geom_dotplot()) grid.arrange(plot1, plot2) 对象,而不是grid.draw,这似乎是NULL在这种情况下失败的原因。

我尝试了是否先呼叫grob

我尝试使用grid.arrange()grid::grid.newpagegrid::viewportgridExtra::arrangeGrob以及ggpubr::ggarrange软件包,但都无济于事。

如何创建带有这些对象的组合图?

1 个答案:

答案 0 :(得分:1)

使用grid.arrange组合图和/或grob时,您要使用实际对象而不是尝试对其进行绘制。这就是为什么plot2NULL的原因,因为它是绘制的而不是返回的,因此无法合并。因此,不要在合并图之前绘制它。

library(ggplot2)
library(gridExtra)

# example ggplot
plot1 <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
# example gtable
plot2 <- ggplotGrob(plot1)

grid.arrange(plot1, plot2)