我正在尝试遍历几个图并将它们组合成一个 cowplot::plot_grid。我无法直接将绘图列表提供给 plot_grid 函数,因为我正在自定义绘图以便每行只显示一个 y 轴。
library(tidyverse)
library(sjPlot)
library(rlang)
data(mtcars)
model <- lm(hp ~ cyl + mpg, data = mtcars)
plotlist <- map(c("cyl", "mpg"), function(x) plot_model(model, type = "pred", terms = {{x}}) )
combine_plots <- function(plotlist) {
plot_grid(plotlist[[1]],
plotlist[[2]] +
theme(axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.y = element_blank() ))
}
map(plotlist, function(x) combine_plots(enquo(x)))
很遗憾,我收到错误 Error in x[["plot.list"]] : object of type 'symbol' is not subsettable
。我认为我使用了错误的准引号动词。我该如何纠正错误?
答案 0 :(得分:2)
我不太熟悉 sjPlot
的情节布局,但这可以在 patchwork
中完成:
combine_plots <- function(plotlist) {
patchwork::plot_layout(
plotlist[[1]] |
plotlist[[2]] +
theme(axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.y = element_blank() ))
}
combine_plots(plotlist)
(我保留了不对齐 y 轴的 OP 代码,但您可能希望明确 y 轴,以便两个图对齐,例如 coord_cartesian(ylim = c(0,250))