R语言及ggplot2在环境空气监测数据可视化中的应用
2015-04-30袁佳
摘要:文章对R语言及ggplot2做了介绍,并通过一系列实例描述了它们在环境空气自动监测数据的收集、清洗、整理、统计变换、可视化方面的应用,反映出其在数据分析中的巨大潜力。
关键词:R语言;ggplot2;环境空气监测;监测数据分析;可视化 文献标识码:A
中图分类号:X823 文章编号:1009-2374(2015)16-0088-04 DOI:10.13535/j.cnki.11-4406/n.2015.16.043
随着新《环境空气质量标准》(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 数据的收集与整理
2.2 数据的统计变换
对数据分析的细化过程往往就是分组的过程。2.1节中为数据增加“month”一列即是为数据按月份进行分组,“site”一列即是为站点分组,“clock”一列即是为数据按时刻进行分组。在实际工作中,分析数据的角度不同,分组也是千奇百怪。如可按当日温度差来分组,也可按平均风速的大小来分组,当然也可以按PM2.5日均值大小来分组来考察其他观测值的情况。
数据的变换与变形则是基于统计以及下一步分析的需要,将数据变化成相应的形式。
2.2.1 创建分组变量。在数据分析过程中,常常发现这种情况:组别分的太细或者需要根据原数值内容创建分组。
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绘制常山县两个站点二氧化硫全年日均值分布的箱线图命令如下所示,绘制出的图形见图4。
3.2 趋势线的添加
在数据可视化工作中,参数与参数之间往往有着或多或少的关系,添加趋势线是探索这种关系的一种桥梁。R语言在数据分析方面最大的优势就是其强大的数据拟合功能,它提供了线性、非线性、神经网络、支持向量机等大量数据拟合工具。这些工具均可以与ggplot2配合使用绘制出趋势图形,以检验其拟合成果。
3.3 分组变量的体现
在数据可视化的过程中,数据分组可以帮助人们揭示更多的细节。ggplot2可将在数据处理阶段创建的分组变量以颜色、形状、大小等形式映射于图上。
此例geom_point()函数中的size参数将臭氧浓度水平映射到二氧化氮浓度点的大小上,如此从图中可以明显可见臭氧浓度水平“强”时,往往是二氧化氮浓度较低时。类似的还可以用colour、shape等将分组变量的各组别映射为颜色、形状等,使绘制出的二维图呈现出更多的内容。
3.4 图形分面
数据可视化中最实用的技术之一是将分组的数据并列呈现,这样可以使得组间数据的比较变得容易许多,ggplot2中将之称为分面(facet)。ggplot2中可以用facet_grid()和facet_wrap()两个函数都可以绘制出分面图。
2.2.3中利用melt()函数得到了csclockmelt数据框,下例利用该数据,绘制四季中二氧化硫、二氧化氮、细颗粒物这三大污染物在24小时中的分布情况图,命令如下,得到图7。
命令中factor()函数为季节排序,shape、colour将污染物种类映射至散点形状、曲线颜色,facet_wrap()函数自动将分组变量season进行分面处理。如此在相同的坐标系中得到四张并列的图,可令人更直观地比较数据。
4 结语
R语言最初时只是一个统计分析软件包,它擅长于绘图、分析数据以及利用数据来拟合统计模型,在不擅长的领域如复杂数据存储、大数据处理,它也提供了接口;ggplot2以其自成一派的语法闻名,它不需要考虑某图形需要填充什么颜色,使用什么形状的线段连接散点,不必去纠结基本图形系统中那些繁杂的参数,将更多的时间用于数据分析本身。本文中某些例子由于考虑到各图形的美观及信息的正式性,在绘制时应用了不少ggplot2中的底层命令,显得各例中命令较为复杂。实际应用中均可大大简化,即使如此,与基础图形系统相比,ggplot2的优势也尽显无疑。
当然,工具永远只能是工具,无论什么工具都无法替代有效数据的积累和大脑思考问题的角度。各地将气象数据纳入环境空气质量数据一起分析时,思考时角度可以更加多元化;各地的一些污染控制工作内容也可以纳入数据框中作分析,以评价其有效性;省、市以上的监测部门更是可以利用更多的环境空气自动监测数据作一些地域性的探索。
参考文献
[1] Hadley Wickham.ggplot2:Elegant Graphics for Data Analysis[M].New York:Springer-Verlag,2009.
[2] Hadley Wickham.The Split-Apply-Combine Strategy for Data Analysis[J].Journal of Statistical Software,2011,40(1).
[3] Hadley Wickham.Reshaping data with the reshape package[J].Journal of Statistical Software,2007,21(12).
作者简介:袁佳(1982-),男,常山县环境监测站工程师,研究方向:仪器分析、环境自动监测系统运维管理。
(责任编辑:黄银芳)