首页 > 解决方案 > 从 ggplots 列表中自动组装拼凑图

问题描述

我正在尝试锻炼一个功能(没有任何成功),它将自动组装一个 ggplots 图列表patchwork

该函数将接受以下输入:

使用您的输入,该功能应自动构建绘图。我在下面提供了一个示例:

library(tidyverse)
library(patchwork)
  
p1 <- mtcars %>% ggplot() + geom_bar(aes(mpg))
p2 <- mtcars %>% ggplot() + geom_bar(aes(cyl))
p3 <- mtcars %>% ggplot() + geom_bar(aes(disp))
p4 <- mtcars %>% ggplot() + geom_bar(aes(hp))
p5 <- mtcars %>% ggplot() + geom_bar(aes(drat))                                   
p6 <- mtcars %>% ggplot() + geom_bar(aes(wt))

plot_list <- list(mpg  = p1,
                  cyl  = p2,
                  disp = p3,
                  hp   = p4,
                  drat = p5,
                  wt   = p6)

# Function inputs
no_of_rows = 2
no_of_col2 = 3
master_list_with_plots = org_plot
    
#Function output would be org_plot below
org_plot <- plot_list[["mpg"]] + plot_list[["cyl"]] + plot_list[["disp"]] + 
            plot_list[["hp"]]  + plot_list[["drat"]] + plot_list[["wt"]] 

有任何想法吗?

标签: rtidyversepatchwork

解决方案


您可以patchwork::wrap_plots输入一个函数:

plot_a_list <- function(master_list_with_plots, no_of_rows, no_of_cols) {

  patchwork::wrap_plots(master_list_with_plots, 
                        nrow = no_of_rows, ncol = no_of_cols)
}

plot_a_list(plot_list, 2, 3)

推荐阅读