❝本节来介绍在 R中如何使用ggplot2结合for循环绘图并保存,下面通过一个案例来看具体操作 ❞
加载R包
代码语言:javascript复制library(tidyverse)
library(data.table)
library(gridExtra)
library(patchwork)
设置文件路径
代码语言:javascript复制file_name <- "loop_data.tsv"
读入数据
代码语言:javascript复制dat <- fread(file_name, sep="t")
获取唯一的城市名称进行循环
代码语言:javascript复制cities = unique(dat$city)
创建一个空列表来保存创建的图
代码语言:javascript复制city_plots = list()
循环遍历并绘图保存
代码语言:javascript复制for(city_ in cities) {
city_plots[[city_]] <- ggplot(dat %>% filter(city == city_),aes(x=zone, y=`multistorey buildings`))
geom_bar(stat="identity",width=0.5)
theme(axis.text.x = element_text(angle=0))
ggtitle(city_)
labs(y=NULL,x=NULL)
theme(plot.title=element_text(size=15,face="bold",hjust=0.5),
axis.title.x=element_text(size=10,face="bold"),
axis.title.y=element_text(size=10,face="bold"))
print(city_plots[[city_]])
ggsave(city_plots[[city_]],file=paste0("plot_",city_,".pdf"), width =3.04, height =3.10, units = "in", dpi=300)
}
上面我们将每一张图都单独输出了,下面来介绍如何将其全部组合起来,分别介绍两种R包的方法gridExtra&patchwork
代码语言:javascript复制grid.arrange(grobs=city_plots,ncol=3)
代码语言:javascript复制patchwork::wrap_plots(city_plots,nrow=2)