错误没有适用于“ ggplot_build”的适用于“网格”类对象的方法

N·高级

我想在使用randomForest,partial和plotPartial之后为3个(多)部分依赖图创建一个通用图例。每当我尝试任何建议的解决方案时,它都会带来:

Error in UseMethod("ggplot_build") : 
  no applicable method for 'ggplot_build' applied to an object of class "trellis"

这是我的代码的示例:

data(boston, package = "pdp") # load the (corrected) Boston housing data

library(pdp)
library(randomForest) # for randomForest, partialPlot, and varImpPlot functions
set.seed(101) # for reproducibility
boston.rf <- randomForest(cmedv ~ ., data = boston, importance = TRUE)
varImpPlot(boston.rf)


# Compute partial dependence data for lstat and rm
pd <- partial(boston.rf, pred.var = c("lstat", "rm"))
# Default PDP
a <- plotPartial(pd)

# Compute partial dependence data for lstat and dis
pd2 <- partial(boston.rf, pred.var = c("lstat", "dis"))
# Default PDP
b <- plotPartial(pd2)

# Compute partial dependence data for rm and dis
pd3 <- partial(boston.rf, pred.var = c("rm", "dis"))
# Default PDP
c <- plotPartial(pd3)

grid_arrange_shared_legend(a,b,c, ncol = 3, nrow = 1)
笨狼

您最有可能提取的代码用于ggplot2plotPartial使用点阵

class(a)
[1] "trellis"

从理论上讲,您可以使用合并图例和普通图例latticeExtra,但是此函数假定图例是相同的:

library(latticeExtra)
library(pdp)
c(a,b)

在此处输入图片说明

但我认为色标一开始并不相同,因此以普通图例作图是错误的

grid.arrange(a, b, ncol = 2)

在此处输入图片说明

为了使其正常工作,您必须找到一种方法使两个图的图例首先相等。也许尝试这样的事情:

library(patchwork)

# get the range of values
col_limits = range(c(pd$yhat,pd2$yhat,pd3$yhat))
col_limits = c(floor(col_limits[1]),ceiling(col_limits[2]))

plts = lapply(list(pd,pd2,pd3),function(i){

g = ggplot(i,aes(x=!!sym(colnames(i)[1]),
y=!!sym(colnames(i)[2]),fill=yhat)) + 
geom_tile() +  
scale_fill_viridis_c(limits=col_limits)+
theme_bw()

return(g)
})

combined = plts[[1]] + plts[[2]] + plts[[3]] & theme(legend.position = "bottom")

在此处输入图片说明

combined + plot_layout(guides = "collect")

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误没有适用于“ select_”的适用于“字符”类对象的方法

UseMethod(“ compute”)中的错误:没有适用于适用于“ nn”类对象的“ compute”适用方法

ggplotly没有适用于'plotly_build'的适用方法,适用于“ NULL”类的if语句对象

R中的错误:没有适用于“ st_centroid”的适用方法应用于“ NULL”类的对象

团结返回错误“没有适用于'unite_'的适用方法”应用于类“ c('double','numeric')”的对象

UseMethod(“ escape”)中的错误:没有适用于'escape'的适用方法应用于类的对象

UseMethod(“ group_by_”)中的错误:没有适用于'group_by_'的适用方法应用于类“ list”的对象

错误:`mutate()`输入`编码`问题。x没有适用于“字符”类对象的“选择”方法

没有适用于“ anti_join”的适用方法应用于“ factor”类的对象

UseMethod(“ predict”):没有适用于“预测”的适用方法应用于“ train”类的对象

没有适用于“ separate_”的适用方法应用于“字符”类的对象

ggsave():UseMethod(“ grid.draw”)中的错误:没有适用于“ grid.draw”的适用于“字符”类对象的方法

UseMethod("predict") 中的错误:没有适用于应用于类 "c('double', 'numeric') 的对象的 'predict' 的方法

R 函数错误,“没有适用于“预测”的方法应用于类“NULL”的对象

UseMethod("filter_") 中的错误:没有适用于“filter_”的方法应用于类“function”的对象

UseMethod("SK") 中的错误:没有适用于“SK”的方法应用于“字符”类的对象

使用“TermDocumentMatrix”时,没有适用于“meta”的方法应用于“character”类的对象

没有适用于“mutate_”的方法应用于“逻辑”类的对象

寓言包错误:没有适用于“模型”的适用方法

使用dplyr :: distinct()时出现R错误的问题:“没有适用于'distinct_'的适用方法应用于类“ c('double','numeric')的对象””

如何合并数据框?UseMethod(“ tbl_vars”)中的错误:没有适用于“ tbl_vars”的适用方法应用于“列表”类的对象

mutate函数中的错误消息:没有适用于'mutate_'的适用方法应用于类“ c('double','numeric')”的对象

没有适用于T的ClassTag

没有适用于'mutate_'的适用方法应用于类“ c('integer','numeric')”的对象

x没有适用于“ tbl_vars”的适用方法应用于类“ c('double','numeric')”的对象

导入错误:没有名为 PIL 的模块适用于 3.7,但不适用于 3.8

UseMethod("html_table") 中的错误:没有适用于“html_table”的方法应用于“xml_missing”类的对象

UseMethod("required_pkgs") 中的错误:没有适用于“required_pkgs”的方法应用于“workflow”类的对象

没有方法签名:适用于Groovy中的参数类型错误