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

China☆狼群 提交于 2019-11-27 06:50:07

问题


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

gives me the following error

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

Let's assume my second graph has to come out of the plot function. How would one convert that output to a grob-like object so it plays nicely with grid.arrange ?


回答1:


you can try with 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
)

or, alternatively, use gridBase.



来源:https://stackoverflow.com/questions/33826249/force-a-regular-plot-object-into-a-grob-for-use-in-grid-arrange

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!