【问题标题】:Automatically assemble plots for patchwork from a list of ggplots从 ggplots 列表中自动组装拼凑图
【发布时间】:2021-06-15 17:03:35
【问题描述】:

我正在尝试锻炼一个函数(没有任何成功),该函数将使用patchwork 自动组装一个 ggplots 图列表。

该函数将接受以下输入:

  • no_of_rows
  • no_of_cols
  • master_list_with_plots

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

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"]] 

有什么想法吗?

【问题讨论】:

标签: r tidyverse patchwork


【解决方案1】:

如果您正在寻找一个简单的绘图网格,请尝试查看包gridExtra(类似gridExtra::grid.arrange 的函数),或更简单的ggplots 函数包装器ggpubr::ggarange。鉴于您的 plot_list 对象,您可以尝试:

ggpubr::ggarrange(plotlist = plot_list, nrow = 2, ncol = 3, byrow = TRUE)

byrow = TRUE 是默认值。将此设置为FALSE 将按列排列您的绘图列表。

【讨论】:

    【解决方案2】:

    您可以将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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      相关资源
      最近更新 更多