tidyverse:一个因子的每个级别或数值变量的每个值的多个图

时间:2019-05-20 11:38:07

标签: r ggplot2 plot tidyverse purrr

我想为因子的每个水平或数字变量的每个值(此处为vs变量的每个值)绘制多个图。我不想使用facet_gridfacet_wrap。我想知道是否有更紧凑的方法来完成任务。在我的实际数据中,我确实有很多因素。

library(tidyverse)

mtcars %>% 
  dplyr::filter(vs == 0) %>% 
  ggplot(mapping = aes(x = wt, y = mpg)) +
  geom_point()


mtcars %>% 
  dplyr::filter(vs == 1) %>% 
  ggplot(mapping = aes(x = wt, y = mpg)) +
  geom_point()

2 个答案:

答案 0 :(得分:1)

也许那样做?


plot_list <- map(.x = unique(mtcars$vs), ~ mtcars %>% 
              dplyr::filter(vs == .x) %>% 
              ggplot(mapping = aes(x = wt, y = mpg)) +
              geom_point() +
              ggtitle(.x))

plot_list[[1]]

答案 1 :(得分:1)

使用group_bynestpurrr::pwalk遍历嵌套的数据框列表,将分组变量和已过滤的数据框传递到pwalk调用中的自定义函数。

plot_vs <- function(vs, data){ 
g1<-
  data %>% 
  ggplot(mapping = aes(x = wt, y = mpg)) +
  geom_point()+
  ggtitle(!!vs)
print(g1)
}


mtcars %>% 
    group_by(vs) %>% 
    nest() %>% 
    purrr::pwalk(plot_vs)