我正在尝试将两个图形对象(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.newpage
和grid::viewport
和gridExtra::arrangeGrob
以及ggpubr::ggarrange
软件包,但都无济于事。
如何创建带有这些对象的组合图?
答案 0 :(得分:1)
使用grid.arrange
组合图和/或grob时,您要使用实际对象而不是尝试对其进行绘制。这就是为什么plot2
是NULL
的原因,因为它是绘制的而不是返回的,因此无法合并。因此,不要在合并图之前绘制它。
library(ggplot2)
library(gridExtra)
# example ggplot
plot1 <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
# example gtable
plot2 <- ggplotGrob(plot1)
grid.arrange(plot1, plot2)