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

时间:2017-03-10 16:24:42

标签: r plot ggplot2 pryr

此问题来自related post,其中显示了如何使用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函数将图形保存为对象。油滑。

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 个答案:

答案 0 :(得分:3)

正如@MrFlick正确指出的那样,accepted answer linked here比不存储网格的%<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)))