grid.arrange 来自 gridExtras 更新后以 "only 'grobs' allowed in 'gList'" 退出
grid.arrange from gridExtras exiting with "only 'grobs' allowed in 'gList'" after update
我刚刚在 Mac 上更新了 R、R Studio 和一堆包,包括 ggplot2 和 gridExtras。现在 gridExtras 在基本绘图中失败并出现错误:
"only 'grobs' allowed in "gList""
下面是一些应该有效但无效的代码:
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
参数(似乎已在 2015 年夏季左右随着 2.0.0 版本的发布而被淘汰),因此认为 main=
参数必须是 grob。要替换 main
,您现在可以使用 top
参数(以及 bottom
、left
和 right
)。
所以这适用于例如:
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
旨在与“网格图形对象”(grobs) 一起使用,例如 ggplot2
。
可以找到等效的网格图或使用基本图形方法来堆叠图。
基本地块的解决方案:
par(mfrow = c(2, 1))
plot(rnorm(100))
hist(rnorm(100))
par(mfrow = c(1, 1)) #reset this parameter
我刚刚在 Mac 上更新了 R、R Studio 和一堆包,包括 ggplot2 和 gridExtras。现在 gridExtras 在基本绘图中失败并出现错误:
"only 'grobs' allowed in "gList""
下面是一些应该有效但无效的代码:
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
参数(似乎已在 2015 年夏季左右随着 2.0.0 版本的发布而被淘汰),因此认为 main=
参数必须是 grob。要替换 main
,您现在可以使用 top
参数(以及 bottom
、left
和 right
)。
所以这适用于例如:
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
旨在与“网格图形对象”(grobs) 一起使用,例如 ggplot2
。
可以找到等效的网格图或使用基本图形方法来堆叠图。
基本地块的解决方案:
par(mfrow = c(2, 1))
plot(rnorm(100))
hist(rnorm(100))
par(mfrow = c(1, 1)) #reset this parameter