范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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

  随着新《环境空气质量标准》(GB 3095-2012)的发布、实施,全国各地都在采用环境空气自动监测以应对其严苛的数据有效性要求。环境空气自动监测系统每天都在产生大量的数据,如何对数据进行有效的统计分析,成为一个新的课题。对数据的可视化,是数据分析的第一步。本文应用R语言及ggplot2图形绘制包以浙江省常山县城区两个空气自动站即环保大楼站及图书馆站2014年全年监测数据为例进行各种可视化分析,以探讨该软件在空气质量数据分析领域应用的巨大潜力。
  1 软件准备
  1.1 R语言软件与扩展包
  R语言是一种区分大小写的解释性语言,其具有的强大统计计算及绘图能力,是从大数据中获取有用信息的绝佳工具,它提供了Windows、OS X、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.2 Excel
  但面对原始数据,微软公司的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命令行示例如下:site-rep(环保大楼站,dim(hbdl201401))month-rep(一月份,dim(hbdl201401))hbdl201401-cbind(hbdl201401,site,month)同一站点中的数据,可以使用rbind()函数进行按月合并。当多站点数据合并时,由于设备配置的原因,数据框中各列的名称与数量并不完全一致,使用rbind()合并数据时会出错。如常山县环保大楼站除常规六参数外还配有碳黑仪、能见度仪、气象五参数等,而图书馆站中仅有常规六参数。这时的合并可以用到merge()函数。假设hbdl2014为常山县环保大楼站2014年全年小时均值数据,而tsg2014为图书馆站数据,则可用以下命令合并数据框:
  cs2014-merge(hbdl2014,tsg2014,all=T,sort=F)合并后的数据框cs2014中在图书馆站中所没有的碳黑仪等数据均以NA(缺失)表示。merge()函数可以两两合并大量来源不同的数据框,只需保证列名的统一,数据即可合并无误。在R语言中用命令tail(cs2014)即可列出cs2014的最后6行:
  2.2 数据的统计变换
  对数据分析的细化过程往往就是分组的过程。2.1节中为数据增加month一列即是为数据按月份进行分组,site一列即是为站点分组,clock一列即是为数据按时刻进行分组。在实际工作中,分析数据的角度不同,分组也是千奇百怪。如可按当日温度差来分组,也可按平均风速的大小来分组,当然也可以按PM2.5日均值大小来分组来考察其他观测值的情况。数据的变换与变形则是基于统计以及下一步分析的需要,将数据变化成相应的形式。
  2.2.1 创建分组变量。在数据分析过程中,常常发现这种情况:组别分的太细或者需要根据原数值内容创建分组。
  第一种情况可以合并组别。例如按气象学上的规定,以每年的三、四、五月为春季,六、七、八月为夏季,九、十、十一月为秋季,十二、一、二月为冬季。需要以季节分组时,可以调用如下命令:
  c s 2 0 1 4 $ s e a s o n [ c s 2 0 1 4 $ m o n t h = = 三月份|cs2014$month==四月份|cs2014$month==五月份-春
  c s 2 0 1 4 $ s e a s o n [ c s 2 0 1 4 $ m o n t h = = 六月份|cs2014$month==七月份|cs2014$month==八月份-夏
  c s 2 0 1 4 $ s e a s o n [ c s 2 0 1 4 $ m o n t h = = 九月份|cs2014$month==十月份|cs2014$month==十一月份-秋
  c s 2 0 1 4 $ s e a s o n [ c s 2 0 1 4 $ m o n t h = = 十二月份|cs2014$month==一月份|cs2014$month==二月份-冬
  运行上述命令后,数据框cs2014中就多了一个名为season的列,其标注了每一行数据的季节。第二种情况可以用到R语言中的cut()函数。如原数据中各污染物按月份按时刻进行浓度平均得到数据框cs2014month后,可以以0 0.040mg/m3、0.040 0.080mg/m3、0.080mg/m3为区间将臭氧的时刻平均数据分作3个组别,分别名为弱、中、强,用cut()函数创建分组变量o3level:cs2014month$o3level-cut(cs2014month$o3,breaks=c( 0 , 0 . 0 4 0 , 0 . 0 8 0 , I n f ) , l a b e l s = c ( 弱 , 中,强))
  运行上述命令后,数据框cs2014month中增加了名为o3level的新列,其标注了每一行数据中臭氧的浓度水平。
  2.2.2 分组变换。plyr包提供了一整套工
  具集来处理列表(list)、数组(array)和数据框(data.frame),它可以将复杂的数据分割成几个部分,分别对各个部分进行统计。对于数据框的操作,用的是plyr包中的ddply()函数,如:我们若想得到各个站点的各污染因子日均浓度值,则可调用如下命令:
  c s d a t e m e a n - d d p l y ( c s 2 0 1 4 , . ( d a t e , s i t e ) ,
  summarise,so2=round(mean(so2,na.rm=TRUE),
  3 ),n o 2 = r o u n d(me a n ( n o 2 , n a . r m = TRU E),
  3),co=round(mean(co,na.rm=TRUE),2),
  pm10=round(mean(pm10,na.rm=TRUE),3),
  pm2.5=round(mean(pm2.5,na.rm=TRUE),3),
  o3=round(mean(sort(o3,decreasing=T),
  na.rm=TRUE),3))
  其中cs2014指原数据框,.(date,site)括号中指的是分组变量(日期、站点),summarise命令意为从原数据中总结出一个新数据,round()为小数位数修约函数,mean()为平均函数,sort()为数据排序函数,命令中臭氧数据取其每日最大8小时平均值,其他污染物均为24小时平均值。该命令运行后就得到了一个新的数据框csdatemean。
  类似的还可以用d d p l y ( ) 函数针对月份以及其他分类变量进行分组统计。如2.2.1节中提到的cs2014month,就可以调用如下命令得到:
  cs2014month-ddply(cs2014,.(clock,month),
  summarise,so2=round(mean(so2,na.rm=TRUE),
  3 ),n o 2 = r o u n d(me a n ( n o 2 , n a . r m = TRU E),
  3),co=round(mean(co,na.rm=TRUE),2),
  pm10=round(mean(pm10,na.rm=TRUE),3),
  pm2.5=round(mean(pm2.5,na.rm=TRUE),3),
  o3=round(mean(o3,na.rm=TRUE),3))
  除此之外,plyr包还提供了一些灵活的函数如transform等用于组间数值的统计,详见plyr包的自带说明。
  2.2.3 数据变形。reshape2包提供的melt()和dcast()函数实现的是类似于Excel中数据透视表的功能,可从繁杂的数据中摘取出想要的信息。其中melt()函数可以将多列数据筛选后融合在一起,即从宽变长,下面举例说明:
  csclockmean-ddply(cs2014,.(clock,season),
  summarise,so2=round(mean(so2,na.rm=TRUE),
  3),no2=round(mean(no2,na.rm=TRUE),
  3),co=round(mean(co,na.rm=TRUE),2),
  pm10=round(mean(pm10,na.rm=TRUE),3),
  pm2.5=round(mean(pm2.5,na.rm=TRUE),3),
  o3=round(mean(o3,na.rm=TRUE),3))
  csclockmelt-melt(csclockmean,id.var=c(clock,season),measure.var=c(so2,no2,pm2.5))
  执行以上命令后,先得到一个名为csclockmean的数据框,再通过m e l t ( ) 函数得到一个名为csclockmelt的新数据框,用head()函数分别读取两个数据框的前6行:
  melt()函数中id.var意为标识变量,即在原数据框中需保留的列向量,measure.var意为度量变量,即在原数据框中需要融合的列向量。melt()函数生成的新数据框中保留了id.var的同时,生成了两列:一列名为variable,包含的是measure.var;一列名为value,即原数据框中measure.var的值。由于ggplot2的独特语法,使用melt()函数得到的新数据框可使ggplot2在同一张图中绘制多个参数。
  3 ggplot2数据可视化应用
  一般认为R语言有4套图形系统,即graphics、grid、lattice、ggplot2。其中graphics、grid、lattice被认为是基础图形系统,它们的绘图命令精炼、实用、运行速度块,制出的图形美观、实用,但是基础图形系统的制图方式极为生硬,函数各参数繁复,令人往往在绘图上耗费大量的时间,而不是在数据分析上。
  ggplot2是2005年后才新出现的图形系统,它提供了统一的接口及一些选项,替代了基础图形系统那套繁杂的修补体系,令使用者能更多地关注于数据本身。当然ggplot2中也有大量底层命令可对图形作精细的修改。
  3.1 数据的简单分布
  箱线图是一种展示数据分布的方法, 箱内为25% 75%的值,箱中的横线代表中位值,箱子上下竖线表示上下的相邻值,超过相邻值的点称为外部点。使用ggplot2绘制常山县两个站点二氧化硫全年日均值分布的箱线图命令如下所示。
  ggplot(csdatemean,aes(site,so2))+geom_boxplot()+xlab(空气自动监测站点)+ylab(expression(paste(二氧化硫日均浓度(mg/m^3))))
  ggplot2有其特殊的语法,其特点是+号,任何图层都可以通过+号来实现。geom_boxplot()是ggplot2中绘制箱线图的函数,类似的还有geom_point()(绘制散点图)、geom_line()(绘制折线图)、geom_histogram()(绘制条形图)等。xlab()添加的是x轴上的文字说明,ylab()中的expression()函数是为了在图中实现mg/m3的表达式。
  3.2 趋势线的添加
  在数据可视化工作中,参数与参数之间往往有着或多或少的关系,添加趋势线是探索这种关系的一种桥梁。R语言在数据分析方面最大的优势就是其强大的数据拟合功能,它提供了线性、非线性、神经网络、支持向量机等大量数据拟合工具。这些工具均可以与ggplot2配合使用绘制出趋势图形,以检验其拟合成果。下例使用ggplot2中的stat_smooth()函数自动添加趋势线来探索PM2.5与PM10数据间的关系。
  ggplot(csdatemean,aes(pm2.5,pm10))+geom_point(colour=grey60)+stat_smooth(method=lm,se=F,colour=black)+xlab(expression(paste(PM2.5日均数据(mg/m^3))))+ylab(expression(paste(PM10日均数据(mg/m^3))))
  在geom_point()和stat_smooth()两个函数中添加颜色参数,以使得散点图显得颜色淡一点,而让趋势线更明显。stat_smooth()函数中method=lm指按直线方式添加趋势线。从图5中明显可见PM2.5与PM10呈现了一种极强的线性关系。
  3.3 分组变量的体现
  在数据可视化的过程中,数据分组可以帮助人们揭示更多的细节。ggplot2可将在数据处理阶段创建的分组变量以颜色、形状、大小等形式映射于图上。
  如2.2.2节中得到了各污染物按月份的时刻浓度平均数据cs2014month,2.2.1节中用cut()函数将该数据框中臭氧浓度分为弱、中、强三个水平,用ggplot2绘制出二氧化氮的时刻浓度图,并用图中二氧化氮浓度点的大小来代表臭氧的浓度水平,命令如下:
  ggplot(cs2014month,aes(clock,no2))+geom_point(aes(size=o3level))+xlab(时刻)+ylab(expression(paste(二氧化氮浓度(mg/m^3))))+scale_size_discrete(name=臭氧浓度水平)
  此例geom_point()函数中的size参数将臭氧浓度水平映射到二氧化氮浓度点的大小上,如此从图中可以明显可见臭氧浓度水平强时,往往是二氧化氮浓度较低时。类似的还可以用colour、shape等将分组变量的各组别映射为颜色、形状等,使绘制出的二维图呈现出更多的内容。
  3.4 图形分面
  数据可视化中最实用的技术之一是将分组的数据并列呈现,这样可以使得组间数据的比较变得容易许多,ggplot2中将之称为分面(facet)。ggplot2中可以用facet_grid()和facet_wrap()两个函数都可以绘制出分面图。
  2.2.3中利用melt()函数得到了csclockmelt数据框,下例利用该数据,绘制四季中二氧化硫、二氧化氮、细颗粒物这三大污染物在24小时中的分布情况图,命令如下。
  csclockmelt$season-factor(csclockmelt$season,levels=c(春,夏,秋,冬))
  ggplot(csclockmelt,aes(clock,value))+geom_point(aes(shape=variable))+geom_line(aes(colour=variable))+facet_wrap( season)+xlab
  (时刻)+ylab(expression(paste(浓度值(mg/m^3))))+scale_colour_hue(name=污染物,labels=c(二氧化硫,二氧化氮,细颗粒物))+scale_shape(name=污染物,labels=c
  (二氧化硫,二氧化氮,细颗粒物),solid=F)
  命令中f a c t o r () 函数为季节排序, s h a p e 、colour将污染物种类映射至散点形状、曲线颜色,facet_wrap()函数自动将分组变量season进行分面处理。如此在相同的坐标系中得到四张并列的图,可令人更直观地比较数据。
  4 结语
  R语言最初时只是一个统计分析软件包,它擅长于绘图、分析数据以及利用数据来拟合统计模型,在不擅长的领域如复杂数据存储、大数据处理,它也提供了接口;ggplot2以其自成一派的语法闻名,它不需要考虑某图形需要填充什么颜色,使用什么形状的线段连接散点,不必去纠结基本图形系统中那些繁杂的参数,将更多的时间用于数据分析本身。本文中某些例子由于考虑到各图形的美观及信息的正式性,在绘制时应用了不少ggplot2中的底层命令,显得各例中命令较为复杂。实际应用中均可大大简化,即使如此,与基础图形系统相比,ggplot2的优势也尽显无疑。
  当然,工具永远只能是工具,无论什么工具都无法替代有效数据的积累和大脑思考问题的角度。各地将气象数据纳入环境空气质量数据一起分析时,思考时角度可以更加多元化;各地的一些污染控制工作内容也可以纳入数据框中作分析,以评价其有效性;省、市以上的监测部门更是可以利用更多的环境空气自动监测数据作一些地域性的探索。

加强初中物理教学研究的意义及建议论文初中物理作为一门自然学科,有其独特性和科学性。通过初中物理的学习可使学生了解自然界的一些规律,解释自然界和生活中的一些现象,使学生对探究大自然的奥妙产生浓厚的兴趣。但初中物理中有很从在岸上教学生游泳说放鸟出笼论文摘要实施开放式教学是时代的呼唤,是新课标教学体系下对学生的培养要求。传统的在岸上做动作教学生游泳的教学模式,滞后了学生的思维发展和创新能力。数学教学中实施放鸟出笼的开放式教学策略,中学生挫折心理及引导论文对青少年进行抗挫折教育是规范其行为习惯培养良好的道德品质的重要途径。在调查中发现,96的中学生认为自己曾经多次遭受过挫折,但多数人片面理解和看待挫折。以下是中学生挫折心理及引导论文贫困县农村教师发展中存在的问题及对策的论文论文摘要文章从开展对标活动,创新管理激励机制,挖掘自身潜力加强教师队伍的建设,促进学校间教学质量的均衡推行教育革命,引进优秀教师等几个方面阐述了如何解决贫困县教育实践中存在的师生薄基于社会心理学理论的P2P虚拟学习社区的设计论文把P2P对等技术运用到虚拟学习社区中,通过对社会心理学理论的学习,使之更加适应当前远程教育领域分布式协同的趋势,为解决当前网络教育存在的问题提供一种全新的思路。目前大多数虚拟学习社词汇教学论文摘要近几年来,农村高中的艺体特长生数量在逐渐增多,由于专业课学习占据了他们相当多的时间,致使他们文化课成绩不理想,其中,英语成绩差尤为明显。通过十三年的艺体生英语教学实践,笔者认为简述科教片的现状及发展策略的论文论文关键词科教片现状策略论文摘要科教片在科教兴国的伟大战略中占据特殊的地位,研究科教片的发展现状并提出相应的发展策略对于科教片的发展意义重大。本文从科教片的现状谈起,运用相关的科教语文教学方面的论文语文是语言以及文学文化的简称,包括口头语言和书面语言口头语言较随意,直接易懂,而书面语言讲究准确和语法文学包括中外古今文学等。小编精心为你整理了语文教学方面的论文,希望对你有所借鉴影视资源在小学语文教学中的运用论文摘要重视教育,重视人才培养一直是我国深入贯彻落实的一项基本国策。近年来,我国对小学生的各方面综合素质的培养愈加重视,教育形式与方法也越来越多元化信息化。随着科学技术的飞速进步与发展供热工程管理造价影响因素及控制论文1关于供热工程管理造价的相关影响因素分析探讨11供热工程的建设热源在对供热工程进行管理造价时,项目热源就是影响其管理的主要因素之一。并且由于项目热源主要包括热源获得和热源使用两部分对农村消费者对转基因食品的态度进行研究论文一背景介绍转基因食品(GeneticallyModifiedFood,简称GMF)是指利用生物基因技术改变动物植物或微生物的基因组成,并由这些改变了基因组成的动物植物或微生物所制造
小学社会实践论文导语社会实践活动很受学生的喜爱,它补充了课堂教学的不足,为学生打开了一扇接触社会,了解社会的窗口给每天被语数英学科压得喘不过气来的学生带来一抹亮色。以下是小编整理小学社会实践论文的谈丹蒌片对大鼠心肌缺血再灌注损伤的保护作用及机制论文再灌注治疗能快速打开堵塞血管恢复冠脉血供,是治疗冠心病急性心肌梗死的重要手段,据统计我国2013年冠状动脉经皮介入术(percutaneouscoronaryinterventioLED背光的论文参考手机背光是当今led最大的应用市场之一,由于市场已处于饱和状态,价格下滑明显,虽然销售量持续增加,但销售金额并没有明显的成长。尽管如此,5到10吋手机装置的背光应用仍将是市场成长新关于奥贝尔氧化沟工艺节能设计计算探讨论文0引言奥贝尔氧化沟污水处理工艺最初由南非的Huisman公司设想提出,沟体通常由三个同心椭圆形沟道组成,三个沟道内均设置有曝气转碟,具有推流式和完全混合式两种流态的优点,其形状如图论文创意创业的先驱因素以及其外延和内涵摘要如果说创意产业是指当代以创意理念为核心的总体经济活动,那么,创意创业就是指源自个人创造力技巧及才华,从创意中寻求效益的创业思路的个体经济活动。本文在综合已有创意产业研究成果的基机械加工质量影响因素及管理论文摘要随着现代科学技术的不断进步,制造行业机械化水平不断提高。机械加工质量管理对生产机械产品性能以及使用年限具有直接影响,只有做好机械加工管理,才能够保障机械加工质量以及机械产品质量蓝印花布的纹样造型与色彩特征研究论文清代南通蓝印花布享誉全国,是我国民间传统手工印花织物的佼佼者。清代南通蓝印花布用途非常广泛,常被应用于枕套包袱被套等日常生活物品上。清代南通蓝印花布纹样类型多种多样,纹样风格朴素典大学寒假社会实践论文导语在实践中锻炼自己相关的素质,为将来进入社会打下良好的基础。以下为大家介绍大学寒假社会实践论文文章,仅供参考!大学寒假社会实践论文一实习目的和意义实习是我们大学学习中的实践环节。论文兴趣在学习中的重要性兴趣对于一个人的学习来说是至关重要的,尤其是数学学习。学习是偏理性的科目,没有兴趣作为动力和牵引学习起来就会很困难。当然,有了良好的学习兴趣,加上日后的努力,学习起来就不成问题。而幼儿舞蹈教育对幼儿成长发展的意义论文一幼儿舞蹈教育概述幼儿舞蹈教育是以舞蹈作为教学载体,来对幼儿进行真善美正确人生观培养的一种教育形式。幼儿舞蹈主要是讲述幼儿身边发生的故事或者是对神秘大自然的探索等生活片段,结合舞蹈水利水电施工组织设计探讨论文1水利水电工程施工组织设计的特点1。1复杂性水利水电施工工程大部分由很多单项工程组成,施工的过程中很容易受到施工的干扰,比起土木建筑工程来说,施工的难度要更大一些。施工过程中还会受