【问题标题】:saving a base r plot as an object that can be plotted in a multiplot将基础 r 图保存为可以在多图中绘制的对象
【发布时间】:2017-03-10 16:24:42
【问题描述】:

这个问题建立在related post 之上,它展示了如何使用pryr 包中的%<a-% 函数轻松地将绘图存储为r 对象。伟大的!但是,我现在想创建一个将基本 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 制作一个图形,并使用pryr 包中的%&lt;a-% 函数将该图形保存为一个对象。光滑。

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 数字组合?

【问题讨论】:

  • 似乎您应该在该链接问题上使用已接受的答案,而不是 %&lt;a-%,因为它不会返回网格对象,只是稍后重新运行命令。如果你想使用grid.arrage,你需要一个网格对象。
  • @MrFlick 哦,我现在明白了。我没有完全理解链接帖子的公认答案。事实上,使用gridGraphics 方法是可行的。你想发布答案还是我应该删除这个问题,因为它有点多余......?
  • 如果您的代码可以让您的示例工作,我建议您在下面回答您自己的问题,因为它可能对其他人有用。

标签: r plot ggplot2 pryr


【解决方案1】:

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

【讨论】:

  • 我按照您的回答解决了我的问题here,但没有成功。有什么建议么?我想使用从plot 创建的图表生成多图。
猜你喜欢
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多