从R中的通用代码生成多个图

时间:2018-07-18 20:33:28

标签: r ggplot2

我有一段代码,用于从数据集中生成多个图。数据集根据可视化所需的参数进行过滤,并使用ggplot进行绘制。

library(ggplot2)
summary <- filter(dataframe) 
plot <- ggplot(summary)

现在,我有多个代码块用于过滤每种类型的图形,并且每个块都有一个“摘要”和“情节”。

有没有一种方法可以同时绘制多个称为“ plot”的函数?有没有一种方法可以创建一个用户界面/按钮,当单击该按钮时可以一次性生成所有图?

1 个答案:

答案 0 :(得分:1)

如果每个图都具有相同的类型,但具有不同的数据,则可以将其写入一次,如@Victor Ordu建议使用循环或类似lapply的方法将它们放在列表中或map()包中的purrr

然后您可以使用ggpubr package中的ggarrange来安排它们。

例如:

library(tidyverse)
library(ggpubr)

# Plot function
example_plot <- function(x){
  ggplot(x, aes(drat, wt)) +
    geom_point()
}

# Summarise in a dataframe and plot into a list
graphs <- mtcars %>% 
  group_by(cyl) %>% 
  nest() %>% 
  mutate(graph = map(data, ~ example_plot(.x))) %>% 
  pull(graph)

# Plot them all!
ggarrange(graphs[[1]], graphs[[2]], graphs[[3]], ncol = 3)

enter image description here

否则,直接跳过即可进行整理。