R语言lattice绘图添加panel.lmbands报panel参数重复错误如何解决?
报错原因
代码中重复为xyplot传入了panel参数,第一次指定为panel.lmbands,第二次又定义了自定义面板函数,R无法匹配优先级,因此抛出参数冲突错误。
修正方案
将panel.lmbands的调用整合到自定义面板函数内部,删除重复的panel参数即可,完整可运行代码如下:
library(lattice) library(tidyverse) library(hydroGOF) library(mosaic) library(latticeExtra) summ <- iris %>% group_by(Species) %>% summarise(Rsq = cor(Sepal.Length, Petal.Length)^2, RMSE = rmse(Sepal.Length, Petal.Length), NSE = NSE(Sepal.Length, Petal.Length)) %>% mutate_if(is.numeric, round, digits=2) summ$ann <- lapply(1:nrow(summ), function(i) with(summ[i, ], c(bquote(R^2 == .(Rsq)), bquote(RMSE == .(RMSE)), bquote(NSE == .(NSE)))) ) xyplot(Petal.Length ~ Sepal.Length | Species, data = iris, pch = 23, layout=c(3,1), band.lty = c(conf =2, pred = 1), band.lwd =c(conf =1, pred = 1), npts = 500, scales=list(cex=c(1.4,1.4), alternating=1, relation = "free"), xlab = list(label="Sepal Length", fontsize=20), ylab = list(label="Petal Length", fontsize=20), panel = function(x, y, ...) { i <- panel.number() # 调用panel.lmbands完成散点、回归线、置信/预测区间绘制 panel.lmbands(x, y, ...) # 叠加拟合指标标注 panel.key(as.expression(summ$ann[[i]]), points = FALSE) })
效果说明
运行后将生成3个并排的分面图,每个分面包含鸢尾花对应亚种的散点、回归拟合线、虚线置信区间、实线预测区间,同时自动标注对应分面的R²、RMSE、NSE三个拟合指标,完全符合预期需求。
内容的提问来源于stack exchange,提问作者UseR10085
相关产品推荐
相关产品推荐

