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

12
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, : 只有 "grobs" 允许在 "gList" 中。

假设我的第二个图必须从 plot 函数中输出。如何将该输出转换为类似于 grob 的对象,以便与 grid.arrange 协同工作?


你之前不是已经问过这个问题了吗? - user3710546
是的,但没有可重现的代码,而且排版不好。我已经删除了旧的。 - Chapo
1个回答

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 作为替代方案。


谢谢你的回答。最终我使用了ggplot2重新制作了绘图方法,因为使用你的方法会出现尺寸问题。不过我还是会验证一下,因为它确实能够完成预期的功能。 - Chapo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接