【问题标题】:grid.arrange from gridExtras exiting with "only 'grobs' allowed in 'gList'" after updategrid.arrange 从 gridExtras 退出,更新后“'gList'中只允许'grobs'”
【发布时间】:2016-01-17 13:31:38
【问题描述】:

我刚刚在我的 Mac 上更新了 R、R Studio 和一堆包,包括 ggplot2 和 gridExtras。现在 gridExtras 在基本绘图中失败并出现错误:

""gList" 中只允许使用 'grobs'"

下面是一些应该可以工作但不能工作的代码:

library(ggplot2)
p1 = qplot(1:10,rnorm(10))
p2 = qplot(1:10,rnorm(10))
library(gridExtra)
grid.arrange(p1, p2, ncol=2, main = "Main title")

这会转储出以下错误:

Error in gList(list(grobs = list(list(x = 0.5, y = 0.5, width = 1, height = 1,  : 
  only 'grobs' allowed in "gList"
In addition: Warning message:
In grob$wrapvp <- vp : Coercing LHS to a list

感谢任何帮助!

【问题讨论】:

  • grid.arrange 没有main 参数(至少根据我的帮助)。没有它,您的代码可以正常工作。
  • 希望您也查看了对 ggplot2 2.0 的更改。它有两个变化,可能会破坏某些可见代码中的现有功能。
  • 是的,在 github 上四处寻找发行说明,没有发现提到这一点,但很清楚发生了什么。
  • 就是这样!谢谢。

标签: r ggplot2 gridextra r-grid


【解决方案1】:

这是因为grid.arrange 不再有main 参数(似乎已在2015 年夏季左右随着2.0.0 版本的发布而被淘汰),因此认为main= 参数必须是一个grob。要替换main,您现在可以使用top 参数(以及bottomleftright)。

因此,例如:

library(ggplot2)
p1 = qplot(1:10,rnorm(10))
p2 = qplot(1:10,rnorm(10))

library(gridExtra)
grid.arrange(p1, p2, ncol=2,top="Main Title")

该消息有点令人困惑,因为它会查看它不知道的所有参数并假设它们可能是它可以绘制的grobs(图形对象)。像这样令人困惑的错误消息是您为这种灵活性付出的代价。

注意:-如果您有很多 grobs,您应该考虑将它们全部打包成一个列表并使用以下形式:

grid.arrange( grobs = list(p1,p2,...),...

上面的代码结果如下:

【讨论】:

  • 就是这样。谢谢!
  • 我很确定这会赢得最不相关的错误消息奖。这解决了我的代码问题:grid.arrange(arrangeGrob(&lt;things&gt;, main = "Big Title", ncol=1))
  • 是的,我花了一年的时间才意识到我得到了所有这些访问和投票是因为错误消息,而不是因为他们更改了参数...
  • 这很有帮助,但也请参阅其他答案:基础绘图不适用于此包,只有 ggplot2。
【解决方案2】:

如果绘图是使用基图生成的,也会发生错误,因为grid.arrange 旨在与“网格图形对象”(grobs)一起使用,例如ggplot2

可以找到等效的网格图或使用基础图形方法来堆叠图。

基础地块的解决方案:

par(mfrow = c(2, 1))
plot(rnorm(100))
hist(rnorm(100)) 
par(mfrow = c(1, 1)) #reset this parameter

【讨论】:

  • 这就是为什么它对我不起作用,所以 +1。但是:我遇到了一个问题,即生成的 pdf 没有像在 R Studio 中那样通过比例。知道为什么吗?
  • 我不确定你所说的 R Studio 是什么意思。您可以在 R Studio 中制作基本样式的绘图或 ggplots(或任何东西),它只是一个编辑器。尝试使绘图边距更大。
  • 我的意思是,当我在 R Studio 中查看绘图,然后使用“导出”按钮将它们导出为 pdf 时,比例尺不存在。使用ggplot2 方法会遇到同样的问题。我会试试你的情节边缘想法,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
相关资源
最近更新 更多