Сохранение базового r графика как объекта, который можно построить в мультиплоте

Этот вопрос основан на соответствующей публикации, в которой показано, как легко сохранить сюжет как r объект с %<a-% функция от pryr пакет. Большой! Однако теперь я хочу создать мультиплот, который объединяет базовый график r с 2 ggplot цифры. я использую grid.arrange ниже.

Используя базу r cars Данные, которые я могу сделать два ggplot цифры.

library(ggplot2)
library(pryr)
library(gridExtra)

Fig1 <- qplot(speed, data=cars, geom="histogram")
Fig2 <- qplot(dist, speed, data=cars, geom="point")

Затем я рисую plotи сохраните рисунок как объект, используя %<a-% функция от pryr пакет. Slick.

Fig3 %<a-% plot(cars$speed, cars$dist)
Fig3

Наконец, я хочу объединить 3 фигуры в один график, как показано ниже.

Figs <- grid.arrange(Fig1, Fig2, Fig3,
                     layout_matrix = rbind(c(1,1,1,2,2), c(1,1,1,2,2), c(3,3,3,3,3)))

Код выдает следующую ошибку:

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

Как я могу сохранить базу r сюжет объединить с дополнительным ggplot цифры?

1 ответ

Решение

Как правильно заметил @MrFlick, принятый ответ, связанный здесь, является лучшим подходом, чем %<a-% функция, которая не хранит сетку.

Код ниже дает желаемый результат.

library(ggplot2)
library(gridExtra)
library(gridGraphics)
library(grid)

Fig1 <- qplot(speed, data=cars, geom="histogram")
Fig2 <- qplot(dist, speed, data=cars, geom="point")

plot(cars$speed, cars$dist)
grid.echo()
Fig3 <- grid.grab()

Figs <- grid.arrange(Fig1, Fig2, Fig3,
                     layout_matrix = rbind(c(1,1,1,2,2), c(1,1,1,2,2), c(3,3,3,3,3)))
Другие вопросы по тегам