FOQAT 2.0.0更新日志
2022年03月11日制作了一个互动指南(内容还在更新中,并计划配上视频):
以下是正文:
FOQAT是一个快速处理和分析大气外场观测数据和空气质量数据的R包,项目主页:
2.0.0版本是FOQAT的大更新版本,增加了基于ggplot2语言的绘图模块,增加了一些其他的新功能。新版本已经在Github上发布,CRAN审核中。请先安装Github上的最新版本并载入:
#从Github安装开发版
#安装官方包‘remotes’
install.packages("remotes")
#调用其中的‘install_github’函数从Github安装本包
remotes::install_github("tianshu129/foqat")
library(foqat)
演示新功能
新增绘图模块,包括:
geom_ts: 快速绘制时间序列,支持点、线、面积、柱状。以下代码绘制绘制氮氧化物面积图和臭氧折线图在同一个图中,分列左右y轴(为展示效果,对数据稍做处理):
#产生数据
aqi2=aqi
aqi2$NO[aqi2$NO>7]=NA
aqi2$NO2=aqi2$NO2*0.3
geom_ts(df=aqi2, yl=c(3,2), yr=6, alist=c(3,2), llist=6)
#可以添加参数美化:
geom_ts(df=aqi2, yl=c(3,2), yr=6, alist=c(3,2), llist=6,
alab=list(bquote(NO[2]~" "), bquote(NO~" ")),
llab=list(bquote(O[3]~" ")),
yllab=bquote(NO[x]~" "~(ppbv)),
yrlab=bquote(O[3]~" "~(ppbv)),
lcc="#ff4d4f",
aff=c("#096dd9","#69c0ff"),
xlab="Datetime")
geom_ts_batch:批量绘制时间序列。以下批量绘制时间序列:
#绘图
geom_ts_batch(aqi)
#美化
xlab2=bquote(Time~"")
ylab2=list(bquote(NO~" "~(ppbv)), bquote(NO[2]~" "~(ppbv)), bquote(CO~" "~(ppmv)), bquote(SO[2]~" "~(ppbv)), bquote(O[3]~" "~(ppbv)))
cclist=c("#eb2f96", "#1890ff", "#52c41a", "#faad14", "#f5222d")
geom_ts_batch(aqi, xlab=xlab2, ylab=ylab2, cclist=cclist, bquote=TRUE)
geom_avri:快速绘制平均变化。以下绘制平均变化:
#产生数据
x=avri(aqi, bkip = "1 hour", mode = "recipes", value = "day", st = "2017-05-01 00:00:00")
geom_avri(x,cave=6,csd=11)
#美化
geom_avri(x,cave=6,csd=11,alpha=0.5,lcc="#0050b3",
rff="#40a9ff", xlab="Hour of day",ylab=bquote(O[3]~" "~(ppbv)))
geom_avri_batch:批量绘制平均变化。以下批量绘制平均变化:
#生成数据
x=avri(aqi, bkip = "1 hour", mode = "recipes", value = "day", st = "2017-05-01 00:00:00")
geom_avri_batch(x)
#美化
lcc=c("#f5222d","#fa8c16","#52c41a","#1890ff","#722ed1")
rff=c("#ff7875","#ffc069","#95de64","#69c0ff","#b37feb")
xlab1=list(bquote(Time~""),bquote(Time~""),bquote(Time~""), bquote(Time~""),bquote(Time~""))
ylab1=list(bquote(NO~" "~(ppbv)), bquote(NO[2]~" "~(ppbv)), bquote(CO~" "~(ppmv)), bquote(SO[2]~" "~(ppbv)), bquote(O[3]~" "~(ppbv)))
geom_avri_batch(x, alpha=0.6, xlab=xlab1, ylab=ylab1, lcc=lcc, rff=rff, bquote=TRUE)
geom_tsw: 快速绘制风时间序列。以下代码绘制风时间序列:
#产生数据
df=trs(met, bkip="5 mins")
geom_tsw(df, coliws=4, coliwd=5)
avri函数计算平均变化的结果在一张表中。例如3个物种的时间序列。计算结果的第1列为时间或者序号,第2列到第4列为平均值,第5列到7列为方差。计算结果可选采用科学计数法表示。计算结果为数值型,可以直接导入其他计算,或者采用geom_avri_batch画图。以下代码计算aqi数据的小时分辨率下的平均日变化和方差:
x=avri(aqi, bkip="1 hour")
View(x)
trs函数增加了参数fun,可选择用于重采样的函数,例如计算新分辨率下每个时间段的最大值。以下代码计算每天的最大值:
x=trs(aqi, bkip="1 day", fun="max")
View(x)
新增prop函数,一键把时间序列转化为占比时间序列,即每个时刻每个物种对该时刻总和的贡献。可选只计算完整case。以下代码一键把VOC时间序列转化为VOC占比时间序列:
x=prop(voc)
View(x)
#可视化图:
geom_ts(x, yl=c(2:6), alist=c(2:6))
statdf计算结果中去除时间列,可通过设置参数prop直接计算占比并进行统计。例如计算每个时刻每个VOC物种在总浓度中的占比,并进行统计。以下代码对VOC时间序列中各个物种的占比情况一键统计:
x=statdf(voc, prop=TRUE, n=3)
View(x)
新增svri函数,可选择特定函数来计算平均态变化。以下代码计算小时平均下,每个小时的最大值(例如所有0点至23点中分别计算最大值):
x=svri(aqi, bkip="1 hour", fun="max")
View(x)
新增dm8n_batch函数,一键批量计算多站点(城市)八小时臭氧均值。以下代码构建3列臭氧浓度,并进行批量计算:
#生成数据
aqi2=aqi[c(1,6)]
aqi2$O32=aqi2$O3*runif(1)
aqi2$O33=aqi2$O3*runif(1)