如何为list对象生成的check_model绘图添加模型标题?
解决方案
先修正原代码里的两处小问题:
library(ggplot)应为library(ggplot2)head("mtcars")应为head(mtcars)(加引号会把数据框名当成字符串处理,无法查看数据内容)
要给每个模型的诊断图组添加标题,核心是利用带名称映射的函数获取每个模型对应的分组标签,再通过patchwork专属的注释函数给组合图加标题(直接用labs对check_model() |> plot()返回的组合图不生效,因为这是多个ggplot拼接成的patchwork对象)。
修改后的完整代码:
library(patchwork) library(performance) library(ggplot2) data("mtcars") head(mtcars) # 按cyl分组生成模型,保留分组名称 the_models <- split(mtcars, mtcars$cyl) |> purrr::imap(.f = ~ lm(mpg ~ hp + wt, data = .x)) # 生成带标题的诊断图组 the_plots <- the_models |> purrr::imap(.f = ~ check_model(.x) |> plot() + plot_layout(ncol = 6, nrow = 1) + # 添加对应模型的标题 plot_annotation(title = paste("Diagnostic Plots: Model for", .y, "Cylinders")) ) # 纵向拼接所有图组 the_plots |> Reduce(f = `/`)
关键说明
- 用
imap替代Map:imap会同时传递模型对象(.x)和对应的分组名称(.y,即3、4、6),直接拿到每个模型的标题标识。 plot_annotation():这是patchwork专为组合图设计的注释工具,能给整组诊断图添加统一标题,完美适配check_model生成的多图组合结构。- 标题文本可按需自定义,比如改成
paste("Cylinder Type:", .y)这类更简洁的表述。
内容的提问来源于stack exchange,提问作者bison2178
相关产品推荐
相关产品推荐

