Сохранение базового 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)))