本文同步发表于我的公众号 Magic Air Code
#项目主页:yuque.com/foqat
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) #计算 x=dm8n_batch(aqi2) #时差调整 x$date=as.POSIXct(x$date)-3600*8 #可视化 geom_ts(x, yl=c(2:4), llist=c(2:4), xlab="Date")
loh\ofp\vocct函数结果中增加了统计页,包含:方差、分位数、最大值、最小值。可选择是否单独列出BVOC。以下代码以vocct函数为例:
x=vocct(voc)View(x[["Con_ppbv_stat"]])
其他更新:更新了VOC数据库,优化了匹配。
转载本文请联系原作者获取授权,同时请注明本文来自陈天舒科学网博客。
链接地址:https://wap.sciencenet.cn/blog-3474899-1321754.html?mobile=1
收藏