如何执行用于绘制数据并将其导出为 R 的循环



我有一个包含大量数据的数据框,我尝试用这个绘制它:(为每个物种和每个给定日期范围的国家/地区获取一个图(

> ggplot(my_data, aes(x = Date, y = median, group = Specie, color = Specie)) +
+     geom_line() +
+     geom_point() +
+     facet_wrap(vars(Country))

但结果难以辨认,因为我有 100 多个国家

如何循环和导出每个国家/地区的每个图?

以下是数据帧的第一行:

Date   Country Specie median
1   2014-12-29  AT  co    0.1
2   2014-12-29  AT  no2   15.780000000000001
3   2014-12-29  AT  pm10  20.8
4   2014-12-29  AT  pm25  69.5
5   2014-12-29  AT  so2   2.0
6   2014-12-29  AU  co    2.3333333333333335
7   2014-12-29  AU  neph  6.333333333333333
8   2014-12-29  AU  no2   4.314285714285714
9   2014-12-29  AU  o3     13.171428571428569
10  2014-12-29  AU  pm10    11.666666666666666
11  2014-12-29  AU  pm25    18.22222222222222
12  2014-12-29  AU  so2     3.3166666666666664
13  2014-12-29  BE  co     0.1
14  2014-12-29  BE  no2    19.416666666666668
15  2014-12-29  BE  o3  5.666666666666667

您希望首先将 data.frame 拆分为一个列表,其中每个列表元素都是一个只有一个国家/地区的 data.frame。

df$ID <- paste(df$Country, df$Specie, sep = "_")
df_list <- split(df, df$ID)

然后,您可以迭代列表并制作绘图。

lapply(names(df_list), function(x) {
p <- ggplot(df_list[[x]], aes(x = Date, y = median, group = Specie, color = Specie)) +
geom_line() +
geom_point()
ggsave(paste0(x, "_plot.png"), plot = p)
})
library("readxl")
library(ggplot2)
my_data <- read_excel("lab.xlsx")
library(ggplot2)
pdf("all_plots_file.pdf",onefile = TRUE)
country_list <- as.list(unique(my_data$Country))
for(country in country_list){
data <- subset(my_data, my_data$Country==country)
p<- ggplot(data, aes(x=as.Date(Date,format = "%m/%d/%Y"), median, group = 1, color = Specie)) +
geom_line() +
geom_point() +
xlab("Date") + 
ylab("Median") + 
labs(title = country) +
theme(axis.title.x = element_text(colour="blue", size=10)) +
theme(axis.title.y = element_text(colour="blue", size=10)) +
scale_x_date(date_labels = "%m/%d/%Y")

plot(p)
}
dev.off()

最新更新