错误消息“输入必须是grobs!”(当组合不同的gbm绘图时)

错误消息“输入必须是grobs!”(当组合不同的gbm绘图时),r,gridextra,gbm,R,Gridextra,Gbm,我试图将不同gbm模型中的gbm.plot.fit和plot.gbm组合起来。下面是我的示例代码: #----------------------ask on stackexchange----------------------------# mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") library(gbm) library(dismo) full.model<- gbm.step(da

我试图将不同gbm模型中的gbm.plot.fit和plot.gbm组合起来。下面是我的示例代码:

#----------------------ask on stackexchange----------------------------#
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")

library(gbm)
library(dismo)

full.model<- gbm.step(data=mydata,gbm.x = 2:4,gbm.y = 1,family = "bernoulli", tree.complexity = 5,learning.rate = 0.005, bag.fraction = 0.5)

fit1 <- gbm.step(data=mydata,gbm.x = 2,gbm.y = 1,family = "bernoulli", tree.complexity = 5,learning.rate = 0.005, bag.fraction = 0.5)

a=gbm.plot.fits(full.model,v="gre")

b=plot.gbm(full.model,i.var="gre")

c=gbm.plot.fits(fit1)

d=plot.gbm(fit1)

grid.arrange(a, b, c, d, ncol=2, nrow =2)
错误消息是:

arrangeGrob…,as.table=as.table,clip=clip,main=main,出现错误: 输入必须是grobs


有人能告诉我我的代码可能出了什么问题吗?

看起来这些函数使用的是基本图形,而基本图形不会创建grobs图形对象。网格图形功能(如ggplot2、晶格或网格本身中提供的功能)可创建网格。使用基本图形,您可以在打印前运行parmfrow=c2,2来布局打印,或者查看布局函数以获得更好的控制。如果您发布了足够的代码来创建实际对象,您可能会得到更多的响应。@eipi10感谢您的评论。parmfrow=c2,2在这里不起作用。这是我最初的代码,也是我改用网格的原因。arrange@BondedDust谢谢请看我更新的帖子!!查看对象和代码后,plot.gbm使用晶格打印,而dismo::gbm.plot.fits使用基本打印。您可能需要使用“gridBase”包来混合这两种绘图范例,并且由于plot.gbm不返回网格值,因此您可能需要破解该代码或了解如何打开视口并打印到其中。我想知道是否只是打印到png文件,然后组装可能会更容易。