r - 如何循环绘制数据并将其导出到 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)
})
推荐阅读
- elasticsearch - 我怎样才能为这个日志写一个 grok 模式?
- c# - Azure stream analytics with a c# udf that returns a list of objects
- oracle11g - 如果不存在则创建索引
- python - Pandas dataframe sort by date, then assign letters A-Z
- python - matplotlib Multiple Custom Fill Hatching
- c++ - 增加一个 uint8_t 变量,奇怪的结果
- c - Break 语句在 C 编程语言中无法正常工作
- google-bigquery - 如果 BigQuery 中的一周从星期一开始,如何获取当前一周的第一天?
- flask-marshmallow - Marshmallow 反序列化 [(obj, "str"), (obj, "str"), (obj, "str"), ...]
- marklogic - MarkLogic 查询控制台使用 GET 保存文件