我正在尝试将两个图形对象(grob
)组合成一个单独的绘图 - 其中一个是使用“标准ggplot()
”调用创建的,另一个是在ggplot_gtable
对象上使用grid.draw()
创建的(基于此线程)。
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)
在gList中出现错误(结构为list(wrapvp = structure(list(x = structure(0.5,class =“unit”,valid.unit = 0L,unit =“npc”):仅允许“grobs”在“gList”中
由reprex package(v0.2.1)于2018-12-12创建
显然,调用grid.draw
会导致NULL
对象,而不是grob
,这似乎是grid.arrange()
在此情况下失败的原因。
我尝试过先调用或不调用grid::grid.newpage
。
我尝试使用grid::viewport
和gridExtra::arrangeGrob
和ggpubr::ggarrange
和cowplot::plot_grid
以及patchwork
包,但都没有成功。
如何使用这些对象创建组合图?