0

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

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)
             })

它返回我以下错误

xyplot.formula 中的错误(Petal.Length ~ Sepal.Length | Species, data = iris, : 由多个实际参数匹配的形式参数“面板”

预期的输出将如下所示 在此处输入图像描述

我该如何纠正错误?

4

1 回答 1

1

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

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 包于 2021-08-26 创建 (v2.0.0 )

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

于 2021-08-26T12:24:18.757 回答