将 panel.lmbands 添加到 R 中的点阵图时出错

Error while adding panel.lmbands to lattice plot in R

我想从 mosaic 包中添加 panel.lmbands。我正在使用以下代码

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,
             panel = panel.lmbands,
             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, ...) {
               i <- panel.number()
               panel.xyplot(x, ...)
               panel.key(as.expression(summ$ann[[i]]), points = FALSE)
             })

它returns我以下错误

Error in xyplot.formula(Petal.Length ~ Sepal.Length | Species, data = iris, : formal argument "panel" matched by multiple actual arguments

预期的输出如下所示

如何更正错误?

在这种情况下,您的错误消息非常有用 -- 您定义了面板参数两次,这是不允许的。您可以通过修改自定义面板功能来解决问题:

panel = function(x, ...) {
               i <- panel.number()
               panel.xyplot(x, ...)
               panel.lmbands(x, ...)
               panel.key(as.expression(summ$ann[[i]]), points = FALSE)
             }

您也可以考虑使用 ggformula 而不是 lattice 进行绘图,因为这样可以更容易地堆叠图层。

这是使用 ggformula 绘制的核心图(没有您可以添加的自定义标签、注释等):

suppressPackageStartupMessages(library(ggformula))
gf_point(Petal.Length ~ Sepal.Length |  ~ Species, data = iris, shape = 23) %>%
  gf_lm(interval = "prediction", fill = "blue") %>%
  gf_lm(interval = "confidence", fill = "red")

reprex package (v2.0.0)

于 2021-08-26 创建

有关 ggformula 的更多信息,请参阅 http://www.mosaic-web.org/ggformula/