将基本 r 图保存为可以在多重图中绘制的对象

B. *_*vis 5 plot r ggplot2 pryr

这个问题是从一篇相关文章构建的,该文章展示了如何使用包中的函数轻松地将绘图存储为r对象。伟大的!但是,我现在想创建一个将基本 r 图与 2 个数字相结合的多重图。我在用%<a-%pryrggplotgrid.arrange下面。

使用基本 rcars数据我可以制作两个ggplot数字。

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

Fig1 <- qplot(speed, data=cars, geom="histogram")
Fig2 <- qplot(dist, speed, data=cars, geom="point")
Run Code Online (Sandbox Code Playgroud)

然后,我使用 制作一个图形,并使用包中的函数plot将该图形保存为对象。光滑。%<a-%pryr

Fig3 %<a-% plot(cars$speed, cars$dist)
Fig3
Run Code Online (Sandbox Code Playgroud)

最后,我想将这 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)))
Run Code Online (Sandbox Code Playgroud)

该代码产生以下错误:

Error in gList(list(grobs = list(list(x = 0.5, y = 0.5, width = 1, height = 1,  : 
  only 'grobs' allowed in "gList"
Run Code Online (Sandbox Code Playgroud)

如何保存基础图以与其他图形r组合?ggplot

B. *_*vis 6

正如 @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)))
Run Code Online (Sandbox Code Playgroud)