Заставить обычный объект заговора в Grob для использования в grid.arrange

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 ответ

Решение

Вы можете попробовать с 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.

Другие вопросы по тегам