将标签列表添加到 resid_compare 图表的更优雅的方法?

A more elegant way to add a list of tags to resid_compare graph?

我的期刊要求组合图用面板标记。执行以下操作只会给我“A”标签。

library(ggResidpanel); library(patchwork)


penguin_model <- lme4::lmer(heartrate ~ depth + duration + (1|bird), data = penguins)
penguin_model_log2 <- lme4::lmer(log(heartrate) ~ depth + duration + I(duration^2) +
(1|bird), data = penguins)

resid_compare(list(penguin_model, penguin_model_log2)) + labs(tag = list("A" , "B" )) 

切换到 labs(tag = c("A" , "B" )) 并不能解决问题。

绘制每个诊断图并将它们组合起来returns我需要的。我可以为 2 个诊断面板执行 patchwork,但如果我有 6 个面板要显示,那么能够在 resid_compare 中使用单行命令会很好。

A <- resid_panel(penguin_model, nrow = 4) + labs(tag = "A")
 
B <- resid_panel(penguin_model_log2, nrow = 4) + labs(tag = "B")

A | B

注意:这里的图片看起来很乱,但在 knitted pdf 中看起来还不错。

非常感谢任何帮助。

不是单行,而是一种选择是将您的模型放在列表中,使用 lapply 为每个模型绘制图表,使用 patchwork::wrap_plots 将它们粘合在一起并使用 patchwork::plot_annotation 添加标签:

library(ggResidpanel)
library(patchwork)
library(magrittr)

penguin_model <- lme4::lmer(heartrate ~ depth + duration + (1|bird), data = penguins)
penguin_model_log2 <- lme4::lmer(log(heartrate) ~ depth + duration + I(duration^2) +
                                   (1|bird), data = penguins)

list(penguin_model, penguin_model_log2) %>% 
  lapply(resid_panel, nrow = 4) %>% 
  wrap_plots() +
  plot_annotation(tag_levels = "A")