强制将常规绘图对象放入 Grob 以在 grid.arrange 中使用

force a regular plot object into a Grob for use in grid.arrange

b <- ggplot(cars,aes(x=speed,y=dist))+geom_line()
grid.arrange(
    b,
    plot(cars),
    ncol=1
)

出现以下错误

Error in gList(list(grobs = list(list(x = 0.5, y = 0.5, width = 1, height = 1, : only 'grobs' allowed in "gList"

让我们假设我的第二张图必须来自 plot 函数。如何将该输出转换为类似 grob 的对象,以便它与 grid.arrange 一起很好地播放?

你可以试试 gridGraphics

library(gridGraphics)

grab_grob <- function(){
  grid.echo()
  grid.grab()
}

plot(cars)
g <- grab_grob()
b <- ggplot(cars,aes(x=speed,y=dist))+geom_line()
grid.arrange(
  b,g,
  ncol=1
)

或者,或者,使用 gridBase。