城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

R语言及ggplot2在环境空气监测数据可视化中的应用探究

1月17日 星宿房投稿
  随着新《环境空气质量标准》(GB30952012)的发布、实施,全国各地都在采用环境空气自动监测以应对其严苛的数据有效性要求。环境空气自动监测系统每天都在产生大量的数据,如何对数据进行有效的统计分析,成为一个新的课题。对数据的可视化,是数据分析的第一步。本文应用R语言及ggplot2图形绘制包以浙江省常山县城区两个空气自动站即环保大楼站及图书馆站2014年全年监测数据为例进行各种可视化分析,以探讨该软件在空气质量数据分析领域应用的巨大潜力。
  1软件准备
  1。1R语言软件与扩展包
  R语言是一种区分大小写的解释性语言,其具有的强大统计计算及绘图能力,是从大数据中获取有用信息的绝佳工具,它提供了Windows、OSX、Linux等各大操作系统下的版本,可以直接从网上免费下载、安装、使用。R语言软件在基本安装中提供了大量的数据处理、统计和图形函数,此外各社区还开发了数以千计的扩展包(packages)为R增加了更多令人惊奇的功能,本文用到的ggplot2、plyr、reshape2等即是其中的一部分。
  ggplot2是目前R语言中的图形绘制扩展包,它为R语言提供了一个基于全面而连贯的语法的绘图系统,它由一系列独立的图形部件组成,并能以许多种不同的方式组合起来,使得数据分析者能用紧凑的语法轻松绘制出复杂的图形,从而使数据分析者更能将注意力集中于数据分析本身。plyr与reshape2是两个功能强大的数据整理扩展包,它们为R语言扩展了对数据变换、数据变形的功能。
  ggplot2软件包可以在R语言命令提示符后输入install。packages(ggplot2),选择合适的下载镜像后,就可以自动从网上下载安装。在Windows操作系统下下载的是二进制文件,可以直接使用;在类Unix操作系统下,下载的是包的源代码,经过编译后才能使用,但只要具备gcc等编译工具,安装都可通过简单的命令完成。在使用前,需要输入library(ggplot2)或require(ggplot2)调用该软件包。plyr包等也是如此。
  1。2Excel
  但面对原始数据,微软公司的Excel往往是对数据进行清洗、分列的直观分析利器。各地自动监测站采集并导出的原始数据往往是xml格式的,而Excel处理这种格式极为得心应手。Excel中的数据筛选功能可以轻易地删除大量无效数据,分列功能可以将监测日期与时刻分离以便于下一步的处理,数据格式也可以得到统一,将数据另存为csv格式后即可通过read。csv()函数导入R软件。R软件也可以通过write。csv()函数写出csv格式的文件与Excel交互使用。
  2数据处理
  2。1数据的收集与整理
  在数据分析工作中,收集、整理数据的时间往往是占了工作时间的80以上。在数据收集、整理工作中交互地使用R语言与Excel,可极大地提高工作效率。首先使用Excel将在自动监测过程中产生的无效数据进行筛选、剔除,再按需要,对某些数据进行分列处理,最后导出为csv文件后以便R语言读取。与Matlab等将一切视为矩阵不同,R语言可以灵活地对向量、矩阵、数组、数据框、因子、列表等多种数据结构进行处理。通过read。csv()导入的数据都被视为数据框(data。frame)。数据框是R语言中最常用的数据结构,其每一列都可以包含不同模式的数据,如环境空气监测数据之后,可以增加名为month的一列,用中文一月份表示该数据是一月份的数据,增加site的一列,用中文标注其站点名称,如假设hbdl201401为导入的环保大楼站一月份数据,用R命令行示例如下:siterep(环保大楼站,dim(hbdl201401))monthrep(一月份,dim(hbdl201401))hbdl201401cbind(hbdl201401,site,month)同一站点中的数据,可以使用rbind()函数进行按月合并。当多站点数据合并时,由于设备配置的原因,数据框中各列的名称与数量并不完全一致,使用rbind()合并数据时会出错。如常山县环保大楼站除常规六参数外还配有碳黑仪、能见度仪、气象五参数等,而图书馆站中仅有常规六参数。这时的合并可以用到merge()函数。假设hbdl2014为常山县环保大楼站2014年全年小时均值数据,而tsg2014为图书馆站数据,则可用以下命令合并数据框:
  cs2014merge(hbdl2014,tsg2014,allT,sortF)合并后的数据框cs2014中在图书馆站中所没有的碳黑仪等数据均以NA(缺失)表示。merge()函数可以两两合并大量来源不同的数据框,只需保证列名的统一,数据即可合并无误。在R语言中用命令tail(cs2014)即可列出cs2014的最后6行:
  2。2数据的统计变换
  对数据分析的细化过程往往就是分组的过程。2。1节中为数据增加month一列即是为数据按月份进行分组,site一列即是为站点分组,clock一列即是为数据按时刻进行分组。在实际工作中,分析数据的角度不同,分组也是千奇百怪。如可按当日温度差来分组,也可按平均风速的大小来分组,当然也可以按PM2。5日均值大小来分组来考察其他观测值的情况。数据的变换与变形则是基于统计以及下一步分析的需要,将数据变化成相应的形式。
  2。2。1创建分组变量。在数据分析过程中,常常发现这种情况:组别分的太细或者需要根据原数值内容创建分组。
  第一种情况可以合并组别。例如按气象学上的规定,以每年的三、四、五月为春季,六、七、八月为夏季,九、十、十一月为秋季,十二、一、二月为冬季。需要以季节分组时,可以调用如下命令:
  cs2014season〔cs2014month三月份cs2014month四月份cs2014month五月份春
  cs2014season〔cs2014month六月份cs2014month七月份cs2014month八月份夏
  cs2014season〔cs2014month九月份cs2014month十月份cs2014month十一月份秋
  cs2014season〔cs2014month十二月份cs2014month一月份cs2014month二月份冬
  运行上述命令后,数据框cs2014中就多了一个名为season的列,其标注了每一行数据的季节。第二种情况可以用到R语言中的cut()函数。如原数据中各污染物按月份按时刻进行浓度平均得到数据框cs2014month后,可以以00。040mgm3、0。0400。080mgm3、0。080mgm3为区间将臭氧的时刻平均数据分作3个组别,分别名为弱、中、强,用cut()函数创建分组变量o3level:cs2014montho3levelcut(cs2014montho3,breaksc(0,0。040,0。080,Inf),labelsc(弱,中,强))
  运行上述命令后,数据框cs2014month中增加了名为o3level的新列,其标注了每一行数据中臭氧的浓度水平。
  2。2。2分组变换。plyr包提供了一整套工
  具集来处理列表(list)、数组(array)和数据框(data。frame),它可以将复杂的数据分割成几个部分,分别对各个部分进行统计。对于数据框的操作,用的是plyr包中的ddply()函数,如:我们若想得到各个站点的各污染因子日均浓度值,则可调用如下命令:
  csdatemeanddply(cs2014,。(date,site),
  summarise,so2round(mean(so2,na。rmTRUE),
  3),no2round(mean(no2,na。rmTRUE),
  3),coround(mean(co,na。rmTRUE),2),
  pm10round(mean(pm10,na。rmTRUE),3),
  pm2。5round(mean(pm2。5,na。rmTRUE),3),
  o3round(mean(sort(o3,decreasingT),
  na。rmTRUE),3))
  其中cs2014指原数据框,。(date,site)括号中指的是分组变量(日期、站点),summarise命令意为从原数据中总结出一个新数据,round()为小数位数修约函数,mean()为平均函数,sort()为数据排序函数,命令中臭氧数据取其每日最大8小时平均值,其他污染物均为24小时平均值。该命令运行后就得到了一个新的数据框csdatemean。
  类似的还可以用ddply()函数针对月份以及其他分类变量进行分组统计。如2。2。1节中提到的cs2014month,就可以调用如下命令得到:
  cs2014monthddply(cs2014,。(clock,month),
  summarise,so2round(mean(so2,na。rmTRUE),
  3),no2round(mean(no2,na。rmTRUE),
  3),coround(mean(co,na。rmTRUE),2),
  pm10round(mean(pm10,na。rmTRUE),3),
  pm2。5round(mean(pm2。5,na。rmTRUE),3),
  o3round(mean(o3,na。rmTRUE),3))
  除此之外,plyr包还提供了一些灵活的函数如transform等用于组间数值的统计,详见plyr包的自带说明。
  2。2。3数据变形。reshape2包提供的melt()和dcast()函数实现的是类似于Excel中数据透视表的功能,可从繁杂的数据中摘取出想要的信息。其中melt()函数可以将多列数据筛选后融合在一起,即从宽变长,下面举例说明:
  csclockmeanddply(cs2014,。(clock,season),
  summarise,so2round(mean(so2,na。rmTRUE),
  3),no2round(mean(no2,na。rmTRUE),
  3),coround(mean(co,na。rmTRUE),2),
  pm10round(mean(pm10,na。rmTRUE),3),
  pm2。5round(mean(pm2。5,na。rmTRUE),3),
  o3round(mean(o3,na。rmTRUE),3))
  csclockmeltmelt(csclockmean,id。varc(clock,season),measure。varc(so2,no2,pm2。5))
  执行以上命令后,先得到一个名为csclockmean的数据框,再通过melt()函数得到一个名为csclockmelt的新数据框,用head()函数分别读取两个数据框的前6行:
  melt()函数中id。var意为标识变量,即在原数据框中需保留的列向量,measure。var意为度量变量,即在原数据框中需要融合的列向量。melt()函数生成的新数据框中保留了id。var的同时,生成了两列:一列名为variable,包含的是measure。一列名为value,即原数据框中measure。var的值。由于ggplot2的独特语法,使用melt()函数得到的新数据框可使ggplot2在同一张图中绘制多个参数。
  3ggplot2数据可视化应用
  一般认为R语言有4套图形系统,即graphics、grid、lattice、ggplot2。其中graphics、grid、lattice被认为是基础图形系统,它们的绘图命令精炼、实用、运行速度块,制出的图形美观、实用,但是基础图形系统的制图方式极为生硬,函数各参数繁复,令人往往在绘图上耗费大量的时间,而不是在数据分析上。
  ggplot2是2005年后才新出现的图形系统,它提供了统一的接口及一些选项,替代了基础图形系统那套繁杂的修补体系,令使用者能更多地关注于数据本身。当然ggplot2中也有大量底层命令可对图形作精细的修改。
  3。1数据的简单分布
  箱线图是一种展示数据分布的方法,箱内为2575的值,箱中的横线代表中位值,箱子上下竖线表示上下的相邻值,超过相邻值的点称为外部点。使用ggplot2绘制常山县两个站点二氧化硫全年日均值分布的箱线图命令如下所示。
  ggplot(csdatemean,aes(site,so2))geomboxplot()xlab(空气自动监测站点)ylab(expression(paste(二氧化硫日均浓度(mgm3))))
  ggplot2有其特殊的语法,其特点是号,任何图层都可以通过号来实现。geomboxplot()是ggplot2中绘制箱线图的函数,类似的还有geompoint()(绘制散点图)、geomline()(绘制折线图)、geomhistogram()(绘制条形图)等。xlab()添加的是x轴上的文字说明,ylab()中的expression()函数是为了在图中实现mgm3的表达式。
  3。2趋势线的添加
  在数据可视化工作中,参数与参数之间往往有着或多或少的关系,添加趋势线是探索这种关系的一种桥梁。R语言在数据分析方面最大的优势就是其强大的数据拟合功能,它提供了线性、非线性、神经网络、支持向量机等大量数据拟合工具。这些工具均可以与ggplot2配合使用绘制出趋势图形,以检验其拟合成果。下例使用ggplot2中的statsmooth()函数自动添加趋势线来探索PM2。5与PM10数据间的关系。
  ggplot(csdatemean,aes(pm2。5,pm10))geompoint(colourgrey60)statsmooth(methodlm,seF,colourblack)xlab(expression(paste(PM2。5日均数据(mgm3))))ylab(expression(paste(PM10日均数据(mgm3))))
  在geompoint()和statsmooth()两个函数中添加颜色参数,以使得散点图显得颜色淡一点,而让趋势线更明显。statsmooth()函数中methodlm指按直线方式添加趋势线。从图5中明显可见PM2。5与PM10呈现了一种极强的线性关系。
  3。3分组变量的体现
  在数据可视化的过程中,数据分组可以帮助人们揭示更多的细节。ggplot2可将在数据处理阶段创建的分组变量以颜色、形状、大小等形式映射于图上。
  如2。2。2节中得到了各污染物按月份的时刻浓度平均数据cs2014month,2。2。1节中用cut()函数将该数据框中臭氧浓度分为弱、中、强三个水平,用ggplot2绘制出二氧化氮的时刻浓度图,并用图中二氧化氮浓度点的大小来代表臭氧的浓度水平,命令如下:
  ggplot(cs2014month,aes(clock,no2))geompoint(aes(sizeo3level))xlab(时刻)ylab(expression(paste(二氧化氮浓度(mgm3))))scalesizediscrete(name臭氧浓度水平)
  此例geompoint()函数中的size参数将臭氧浓度水平映射到二氧化氮浓度点的大小上,如此从图中可以明显可见臭氧浓度水平强时,往往是二氧化氮浓度较低时。类似的还可以用colour、shape等将分组变量的各组别映射为颜色、形状等,使绘制出的二维图呈现出更多的内容。
  3。4图形分面
  数据可视化中最实用的技术之一是将分组的数据并列呈现,这样可以使得组间数据的比较变得容易许多,ggplot2中将之称为分面(facet)。ggplot2中可以用facetgrid()和facetwrap()两个函数都可以绘制出分面图。
  2。2。3中利用melt()函数得到了csclockmelt数据框,下例利用该数据,绘制四季中二氧化硫、二氧化氮、细颗粒物这三大污染物在24小时中的分布情况图,命令如下。
  csclockmeltseasonfactor(csclockmeltseason,levelsc(春,夏,秋,冬))
  ggplot(csclockmelt,aes(clock,value))geompoint(aes(shapevariable))geomline(aes(colourvariable))facetwrap(season)xlab
  (时刻)ylab(expression(paste(浓度值(mgm3))))scalecolourhue(name污染物,labelsc(二氧化硫,二氧化氮,细颗粒物))scaleshape(name污染物,labelsc
  (二氧化硫,二氧化氮,细颗粒物),solidF)
  命令中factor()函数为季节排序,shape、colour将污染物种类映射至散点形状、曲线颜色,facetwrap()函数自动将分组变量season进行分面处理。如此在相同的坐标系中得到四张并列的图,可令人更直观地比较数据。
  4结语
  R语言最初时只是一个统计分析软件包,它擅长于绘图、分析数据以及利用数据来拟合统计模型,在不擅长的领域如复杂数据存储、大数据处理,它也提供了接口;ggplot2以其自成一派的语法闻名,它不需要考虑某图形需要填充什么颜色,使用什么形状的线段连接散点,不必去纠结基本图形系统中那些繁杂的参数,将更多的时间用于数据分析本身。本文中某些例子由于考虑到各图形的美观及信息的正式性,在绘制时应用了不少ggplot2中的底层命令,显得各例中命令较为复杂。实际应用中均可大大简化,即使如此,与基础图形系统相比,ggplot2的优势也尽显无疑。
  当然,工具永远只能是工具,无论什么工具都无法替代有效数据的积累和大脑思考问题的角度。各地将气象数据纳入环境空气质量数据一起分析时,思考时角度可以更加多元化;各地的一些污染控制工作内容也可以纳入数据框中作分析,以评价其有效性;省、市以上的监测部门更是可以利用更多的环境空气自动监测数据作一些地域性的探索。
投诉 评论 转载

科技自然与人类初中议论文科技是一把双刃剑,一面韧,一面钝。俗话说科技的发展离不开人类的进步,随着一系列的的科技发展潮流,紧随其后的便是重重问题。汽车的出现,带来的不仅仅是速度,还有一氧化碳等危害……调查与分析专业毕业论文参考选题论文常用来指进行各个学术领域的研究和描述学术研究成果的文章,以下是小编整理的《调查与分析》专业毕业论文参考选题,欢迎参考!1提高统计数据质量的几种途径2敏感性问题调……浅议在生态工业园区培养民众的环保意识摘要生态工业园是实施新型工业化战略的最佳选择,其环保功能远远优越于传统工业园区。文章针对公众环保意识淡薄、环保参与度低以及环境污染与生态恶化现象,阐明生态工业园区民众参与环保的……基于铁路通信技术在客运专线的应用的研究通信技术在我国铁路干线中有着非常广泛应用,加强了我国铁路运输的管理力度,在一定程度上也消除了不良交通事故发生概率,对促进我国铁路运输领域发展做出了杰出贡献。但是我国铁路通信技术……构建污点证人刑事豁免制度的必要性与可行性研究污点证人豁免制度发源于英国,在反对强迫自证其罪原则的基础上产生,该制度在许多国家和地区已经发展成为刑事诉讼中的重要制度。一、污点证人概念污点证人豁免,根据美国《布莱……传统园林设计的论文一、传统园林中的弊端分析第一,传统园林建设过程中过于注重景观建设,没有考虑园林应该发挥的生态效应作用,园林景观在城市中只能以装饰品一般存在,使园林在城市中无法发挥净化空气……教学模式下的高校体育的论文1高校体育教学模式的现状1。1这种教学模式在高校体育教学中具体运用时,就是在大一阶段开设体育基础课,在大二阶段开设体育专业课,在大三、大四阶段开设体育专项选修课。总体来说……教学改革心理学论文一、教材处理上体现生成性一个教师的教学水平主要体现在把握和处理教材的水平上,心理学课堂教学不仅知识教授得要准确、科学,而且在教材处理上要突出重点,突破难点,抓住关键。教学……R语言及ggplot2在环境空气监测数据可视化中的应用探究随着新《环境空气质量标准》(GB30952012)的发布、实施,全国各地都在采用环境空气自动监测以应对其严苛的数据有效性要求。环境空气自动监测系统每天都在产生大量的数据,如何对……音乐美育对和谐社会构建与发展的社会功能浅析美学一词是由希腊语aesthesis演变而来的,他最初的意思是人类的感官感受,鲍姆加登于1750年出版的《美学》一书,标志着美学作为独立学科的形成。而音乐美学作为它的分支之一,……针对卓越医师培养模式在胃肠外科教学中的应用探讨教育部为贯彻落实胡锦涛总书记清华大学建校100周年的重要讲话精神和国家关于深化教育和医疗卫生改革计划的实施,提出了加快推进我国临床医学教育综合改革的卓越医生教育培养计划。该计划……探讨如何运用心理学理论提高高职院校学生学习积极性论文关键词:高职学生心理学学习积极性论文摘要:随着我国教育体制的改革,高等职业教育得到了长足发展,但身处高职院校的一部分学生却厌学心理严重,学习积极性低下。本文通过分析学……
浅谈中美关系的前世今生未来日瓦戈医生现实性探析论文跟项目管理有关的论文范文数控技术毕业论文总结星级饭店运营与管理专业人才培养模式论文浅谈班主任工作在学生就业指导的作用发挥教育论文供应链模式下物流仓储管理系统开发探究论文论析3G时代文化信息资源共享工程服务模式拓展应用让小学生快乐地学习音乐论电视纪录片对职业技术教育通信工程专业教学方法与手段改革的研究写生在水彩绘画创作中的重要性
年第季度日本印刷业销售额有所回升可爱的小白兔【歌词】EyesOnThePrize歌手:MavisStap 征集声音神舟十二号成功发射!想让你的声音也上太空吗?睿真皇后沈氏历经哪八位皇帝李豫为何抛弃沈珍珠美军6万人特工部队曝光,不是CIA!你能猜到是谁么?婆媳之间的相处之道公司资质转让合同小小动物园PTE考试迎来重大改革!考试时间缩短,新推出在线考试德邦物流寄冰箱多少钱(物流寄空调大概多少钱)拍过风月片的4名性感女星,有人嫁入豪门,有人跳楼自尽

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁