将常规绘图对象强制转换为Grob,以便在grid.arrange中使用

时间:2015-11-20 12:02:05

标签: r plot ggplot2 gridextra grob

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

给我以下错误

  

gList中的错误(list(grobs = list(list(x = 0.5,y = 0.5,width = 1,height = 1,:“gList”中只允许'grobs'

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

1 个答案:

答案 0 :(得分:10)

您可以尝试使用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。