我们可以使用
aes_string
传递字符串
l1 <- vector("list", length(var.names))
for(v in seq_along(var.names)){
variable <- var.names[v]
l1[[v]] <- ggplot(df, aes_string(x = variable)) +
geom_histogram() +
facet_wrap(~id)
}
或者开发版本中的另一个选项应该是将字符串转换为符号(
rlang::sym
)并评估(
!!
)
aes
for(v in seq_along(var.names)){
variable <- rlang::sym(var.names[v])
l1[[v]] <- ggplot(df, aes(x = !!variable)) +
geom_histogram() +
facet_wrap(~id)
}
存储在
list
可以保存在
.pdf
文件
library(gridExtra)
l2 <- map(l1, ggplotGrob)
ggsave(marrangeGrob(grobs = l2, nrow = 1, ncol = 1), file = 'plots.pdf')
如果我们需要在一页中覆盖这三个图,请使用
gather
转换为“长”格式
library(tidyr)
library(dplyr)
gather(df, key, val, var.names) %>%
ggplot(., aes(x = val, fill = key)) +
geom_histogram() +
facet_wrap(~id)
-输出