专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

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

  随着新《环境空气质量标准》(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。var;一列名为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的优势也尽显无疑。
  当然,工具永远只能是工具,无论什么工具都无法替代有效数据的积累和大脑思考问题的角度。各地将气象数据纳入环境空气质量数据一起分析时,思考时角度可以更加多元化;各地的一些污染控制工作内容也可以纳入数据框中作分析,以评价其有效性;省、市以上的监测部门更是可以利用更多的环境空气自动监测数据作一些地域性的探索。

陶渊明的委运自然人生观东晋诗人陶渊明一生历经磨难,大起大落,他虽才华横溢,文采超群,曾被朝廷和世人赏识,但处身政治黑暗官场腐败世风日下战乱频发的社会环境下,他无法委曲求全,在三次出仕与归隐后,他总结出委北魏前期的经济文化政治形态研究北魏时期是中国古代历史上的一个特殊的时期,是一个由少数民族建立的政权,在长期汉人统治的背景下,少数民族想要在中原建立并巩固持续政权,它所原有的文化与汉文化势必会产生矛盾,经过漫长而女性的语言论法国人的探索论文摘要与英美派不同,法国女权主义批评更关注女性写作的语言和文本,更多地体现出解构主义的特色。其代表人物有埃莱娜西苏朱莉娅克利斯蒂娃露丝伊利格瑞。她们的批评吸收了德里达的解构主义理台湾原住民射日神话浅析论文关键词原住民神话射日论文摘要原住民的神话议题,有极大部分是原住民用来解释13常生活行为的准绳自然现象或事物起源,包括全世界先民在内,透过探讨或解释其所见到的31月星辰风雷雨雪山基于PROTEUS数字频率计的设计摘要该数字频率计主要由74系列集成电路组成,它除具有基本的计频功能外,还具有对信号进行放大整形选择时基信号自动清零自动换挡等功能。将待测频率的信号加入到信号输入端,与时基信号经闸门清水出芙蓉天然去雕饰论文摘要废名小说文本灵活多样,变化出新,具有很强的个性化特征。他的小说语言简洁朴素又深长有味化用古诗,精雕细刻,追求虽显简单苦涩但不失隽永含蓄的美的语言体验,呈现出清水出芙蓉,天然关于解读曹操文学创作的人才观论文关键词曹操创作人才观念论文摘要曹操聚集一大批具有真才实学的贤名之士,并充分发挥了他们的才干。独到的人才观念和思想不但贯穿在曹操一生的斗争和军事斗争的实践中,同时也非常明确地体现论析五四时期冰心作品的说教气论文关键词说教气五四启蒙基督教思想论文摘要冰心是五四文坛上的爱的歌者,她以童心和母爱为主题,创作出了一批清新婉丽情致独特的作品。然而,当今天时代的光环褪去后,再去审视冰心的作品,就大众文学创作主体论论文关键词大众创作主体线性想象扇形表现欲望论文摘要决定大众文学品质的,不是创作主体的身份地位和生活阅历,而是与精英文学创作主体不同的独特的创作心理和思维方式,这就是线性想象,扇形心纳米技术与百姓生活纳米技术与百姓生活纳米技术与百姓生活化学与化工论文更新2006411阅读纳米技术与百姓生活中国科学院副院长纳米技术研究中心学术委员会主任白春礼院士说电子技术的发展在20世纪改变了人天然气与管道液化气转换技术的探讨天然气与管道液化气转换技术的探讨天然气与管道液化气转换技术的探讨化学与化工论文更新2006411阅读天然气与管道液化气转换技术的探讨二十一世纪,我国能源结构将有较大调整,目标是加快
不同制法马钱子抗炎镇痛作用讨论炎症是机体对炎症因子的损伤产生的一种以血管渗透为中心的积极防御反应,是机体对损伤性刺激的保护性反应,该过程会产生如组胺前列腺素等致痛物质,加重机体的疼痛与损伤。多年研究早已证实中药中国的西方医学史研究近代以来,西方传教士进入中国,向国人介绍西方的先进科学知识,给我国原本沉闷的科学界带来了一丝生气,在一定程度上也推动了我国近代科学的发展。西医也在这样的大背景下迅速发展起来,在近代江西省六县市基本公共卫生服务均等化实施情况解析江西省六县市基本公共卫生服务均等化实施情况解析基本公共卫生服务均等化是指全体城乡居民,无论其性别年龄种族居住地职业收入,都能平等的获得基本公共卫生服务。均等化的实质含义由两个方面构卓家同中国公共卫生战线排头兵卓家同中国公共卫生战线排头兵卓家同,教授,主任医师,广西壮族自治区疾病预防控制中心副主任,国务院特殊津贴专家,卫生部有突出贡献中青年专家,广西壮族自治区优秀专家广西新世纪十百千人才浅谈中国现代公共卫生体系浅谈中国现代公共卫生体系全球经济一体化加速了世界各国经济的共同发展,由公共卫生事件引发的诸多问题已超越了国界,促使世界各国在公共卫生方面加强交流与合作,实现公共卫生方面的双赢和多赢SARS镜子里的中国公共卫生SARS镜子里的中国公共卫生对于中国公共卫生事业来说,SARS疫情的爆发是一个里程碑。SARS像一面镜子,反映出了被长期忽视的公共卫生问题。十年之后,中国的公共卫生事业取得了进步,中国科学家首获诺贝尔生理学或医学奖背景材料材料一10月5日,瑞典卡罗琳医学院在斯德哥尔摩宣布,将2015年诺贝尔生理学或医学奖授予中国女药学家屠呦呦以及另外两名科学家威廉坎贝尔和大村智,表彰他们在寄生虫疾病治疗研究试论我国现阶段经济环境下的反垄断立法的定位(1)论文前言法律作为上层建筑,其产生和实施都受制于经济因素,反垄断法也不例外。反垄断法是现代化社会调整经济的基本法律之一,在西方国家受到高度重视,有着经济宪法市场经济的基石自由企业大宪章之我国非物质文化遗产立法保护的问题与改进世界各国在非物质文化遗产的保护上采取了许多措施,其中立法保护是最为重要的内容之一。我国虽然在立法上对非物质文化遗产的保护进行过积极的探索,然而仍存在一些问题。这些问题值得进一步探索医学职称论文代发机构在国内的医学机构中,论文的发表无论在课题申报课题评奖职称评定还是在绩效评估继续教育津贴发放以及科研文献导读科研评价等方面都是较重要的指标之一。刊载论文的期刊质量高低也直接影响论文的医学检验论文写作范文调查全国医学检验结果互认实施现状,分析探讨我国医学检验结果互认工作推进不快的原因,主要原因有补偿机制支付方式等制度环境不利于医学检验结果共享多样的检测系统增加了比对的技术难度检验项
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网