我想为因子的每个水平或数字变量的每个值(此处为vs
变量的每个值)绘制多个图。我不想使用facet_grid
或facet_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()
答案 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_by
,nest
,purrr::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)