您现在的位置: 首 页 >> 农业论文 >> R语言及ggplot2在环境空气监测数据可视化中的应用探究

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

作者:美术论文
出处:www.lunrr.com
时间:2019-11-06

随着新的《环境空气质量标准》(GB 3095-2012)的发布和实施,全国范围内已经开始对环境空气进行自动监视,以满足其严格的数据可用性要求。环境空气自动监测系统每天都会产生大量数据,如何对数据进行有效的统计分析成为一个新的课题。可视化数据是数据分析的第一步。本文使用R语言和ggplot2图形制图包对2014年浙江省常山县市区的两个空中自动站即环境保护大楼站和图书馆站进行了各种视觉分析。以分析软件的空气质量数据。分析应用的巨大潜力。

1软件准备

1.1 R语言软件和扩展包

R语言是区分大小写的解释性语言,具有强大的统计计算和绘图功能。它是从大数据中获取有用信息的绝佳工具。它提供Windows,OS X,Linux和其他主要操作系统。可以从Internet直接下载,安装和使用下一个版本。 R语言软件在基本安装中提供了很多数据处理,统计和图形功能,并且社区还开发了数千个软件包,以向R添加更多惊人的功能,本文使用Ggplot2,plyr,reshape2等作为其中的一部分它。

Ggplot2当前是R的图形绘图扩展包,它为R语言提供了一个全面,一致的基于语法的绘图系统。它由一系列独立的图形组件组成,可以以许多不同的方式进行组合。这使数据分析师可以轻松地以紧凑的语法绘制复杂的图形,从而使数据分析师可以将更多的精力放在数据分析本身上。 Plyr和reshape2是两个强大的数据修饰扩展,扩展了R语言的数据转换和数据转换功能。

可以在R命令提示符下将ggplot2软件包安装到install.packages(“ ggplot2”)中。选择适当的下载映像后,您可以自动从Internet下载并安装它。 Windows操作系统中下载的是二进制文件,您可以直接使用它;在类似Unix的操作系统下,该软件包的源代码已下载并可以在编译后使用,但是只要您具有gcc和其他编译工具,安装即可简单。命令完成。使用它之前,您需要输入library(ggplot2)或require(ggplot2)来调用程序包。 plyr软件包也是如此。

1.2 Excel

但是面对原始数据,Microsoft的Excel通常是用于清理和排序数据的可视化分析工具。本地自动监视站收集和导出的原始数据通常为xml格式,Excel可以很好地处理这种格式。 Excel中的数据过滤功能可以轻松删除大量无效数据。排序功能可以将监视日期与下一次处理的时间分开,并且可以统一数据格式。将数据保存为csv格式后,即可传递数据。 read.csv()函数已导入R软件。 R软件还可以使用write.csv()函数以csv格式写入文件以与Excel交互。

2数据处理

2.1数据收集与组织

在数据分析中,收集和整理数据的时间往往占到工作时间的80%以上。在数据采集和整理中,交互使用r语言和excel,可以大大提高工作效率。首先,利用excel对自动监测过程中产生的无效数据进行过滤和剔除。然后,根据需要对部分数据进行处理。最后,将其导出到csv文件中,以r语言进行读取。与Matlab把一切都看作矩阵不同,R语言可以灵活地处理多种数据结构,如向量、矩阵、数组、数据框、因子和列表。通过读取导入的数据。csv()被认为是一个数据帧。数据框是r语言中最常用的数据结构。每列可以包含不同模式的数据。例如,在环境空气监测数据之后,可以添加一个名为“月”的列来表示该数据是中文的一月,也可以添加一个名为“站点”的列来表示其站点的中文名称。例如,假设hbdl是环境保护建筑站的导入一月数据,则使用r命令行给出以下示例:site<;-rep(“环境保护建筑站”,dim(hbdl))month<;-rep(“一月”,dim(hbdl))hbdl<;-cbind(hbdl,site,month)可以使用rbind()函数每月合并来自同一站点的数据。合并多站点数据时,由于设备配置的原因,数据框中的列名称和列数不完全相同。使用rbind()合并数据时可能会出错。例如,常山市环保建筑站除了常规的6个参数外,还配备了炭黑表、能见度表和气象5个参数,而图书馆站只有常规的6个参数。merge()函数可用于merge()函数。假设hbdl 2014为常山县环保建筑站2014年的年平均小时数,tsg2014为图书馆站的年平均小时数,可以使用以下命令合并数据框:

cs2014<;-merge(hbdl2014,tsg2014,all=t,sort=f)图书馆站合并数据帧cs2014没有碳黑表数据表示为“na”(缺失)。merge()函数可以在两个或两个中合并来自不同源的大量数据框。只有确保列名的一致性,才能正确合并数据。cs2014的最后六行可以用r语言列出命令尾(cs2014):

2.2数据的统计转换

数据分析的精化通常是分组过程。在2.1节中,在数据中添加“月”列表示按月分组数据,站点列表示按站点分组,时钟列表示按时间分组数据。在实际工作中,从不同角度分析数据,分组也很奇怪。当然,如果根据当天的温差或平均风速分组,也可以将PM2.5平均值分组,以检验其他观测的情况。数据的转换和变形是基于统计的需要和下一步的分析,将数据转换成相应的形式。

2.2.1创建分组变量。在数据分析过程中,经常会发现分组太细或需要根据原始数值内容创建分组。

在第一种情况下,可以合并组。例如,根据气象规定,春天在3月、4月和5月,夏天在6月、7月和8月,秋天在9月、10月和11月,冬天在12月、1月和2月。当需要按季节分组时,可以调用以下命令:

C S 2 014美元S E A S O N[C S 2 014美元M O N T H==“三月”CS 2014$月四月CS 2014$月五月lt;-“春天”;“

C S 2 014$S E A S O N[C S 2 014$M O N T H=“六月”CS 2014$MONTH=“七月”CS 2014$MONTH=“八月”]<;-“夏天”;“

C S 2 014美元S E A S O N[C S 2 014美元M O N T H=”九月“CS 2014美元MONTH=”十月“CS 2014美元MONTH=”十一月“]<;-“秋天”。

C S 2 014$S E A S O N[C S 2 014$M O N T H=”12月“CS 2014$Month=”1月“CS 2014$Month=”2月“]<;-“冬季”;“

在运行上述命令之后,一个名为“季节”的列被添加到数据框cs2014中,它指示每行数据的季节。第二种情况可以在r语言的cut()函数中使用。例如,原始数据中污染物的平均浓度按月、逐时得到后,时间平均臭氧数据可分为3组:0-0.040mg/m3、0.040-0.080mg/m3和>;0.080mg/m3,分别称为“弱”、“中”、“强”。可以通过cut()函数创建分组变量“o3”。级别“:C S 2014月$O3级别<;-剪切(CS 2014月$O3,断开=C(0,0.040,0.080,I N F),L A B E L S=C(“弱”,“中”,“强”))

运行上述命令后,在数据框cs2014 month中添加了一个名为o3level的新列,该列在每行数据中标记了臭氧浓度水平。

2.2.2分组转换。 “ plyr”软件包可提供完整的工作集

集用于处理列表,数组和数据框。它可以将复杂的数据分为几个部分,并分别计算每个部分。为了操作数据框,使用了plyr软件包中的ddply()函数。例如,如果要获取每个站点的每日平均污染因子浓度,可以调用以下命令:

C s a t e e a n n lt -d d pl y(c s 2014 ,(d a t e,s i t e),

总结,SO2=圆形(均值(so2,不存在,RM=TRUE),

3),N O 2=R o n d(me a n(n o 2,n A. R M=TRU E),

3),co=舍入(平均值(co,na。RM=TRUE),2),

PM10=舍入(平均值(pm10,na.rm=TRUE,3),

PM2.5=整数(平均值(pm2.5,na.rm=TRUE),3),

O3=圆(排序(o3,减少=T),

娜。 RM=TRUE,3)

CS2014是指原始数据框。 (日期,站点)括号指的是对变量(日期,站点)进行分组,summary命令是指从原始数据中总结出一个新数据,round()是十进制修订函数,mean()是平均值函数,sort()是一个数据分类功能,该命令中的臭氧数据每天最多消耗8小时。平均而言,其他污染物平均为24小时。运行此命令后,您将获得一个新的数据框csdatemean。

同样,ddply()函数可用于对月份和其他分类变量的统计信息进行分组。如2.2.1节所述,可以通过调用以下命令来获得cs2014 month:

CS2014月&lt; -ddply(cs2014 ,(时钟,月),

总结,SO2=舍入(平均值(SO2,Na。RM=真),

3),N O 2=R o n d(me a n(n o 2,n A. R M=TRU E),

3),co=舍入(平均值(co,na。RM=TRUE),2),

PM10=舍入(平均值(pm10,na.rm=TRUE,3),

PM2.5=整数(平均值(pm2.5,na.rm=TRUE),3),

O3=圆(平均值(o3,na.RM=TRUE,3))

另外,plyr软件包还提供了一些灵活的功能,例如用于组间值统计的转换。有关详细信息,请参见plyr软件包本身的说明。

2.2.3数据失真。 reshape2包提供的melt()和dcast()函数实现类似于Excel中的数据透视表的功能,可以从复杂数据中提取所需的信息。 melt()函数可以过滤多列数据并将其融合在一起,即从“宽”到“长”。以下示例显示:

Csclockmean&lt; -ddply(cs2014 ,(时钟,季节),

总结,SO2=圆形(均值(so2,不存在,RM=TRUE),

3),NO2=圆形(平均值(no2,最小值RM=TRUE),

3),co=舍入(平均值(co,na。RM=TRUE),2),

PM10=舍入(平均值(pm10,na.rm=TRUE,3),

PM2.5=整数(平均值(pm2.5,na.rm=TRUE),3),

O3=圆(平均值(o3,na.RM=TRUE,3))

Csclockmelt&lt; -融化(csclockmean,ID。var=C(“时钟”,“季节”),测量。var=C(“ so2”,“ no2”,“ pm2.5”)。

执行完上述命令后,我们首先获得一个名为csclockmean的数据框,然后通过m e l t()函数获得一个名为csclockmelt的新数据框。我们使用head()函数分别读取两个数据框的前六行。

melt()函数中的id.var函数用于标识变量,即要保留在原始数据帧中的列向量。 measure.var表示度量变量,即需要在原始数据帧中融合的列向量。由melt()函数生成的新数据框将保留id.var并生成两列:一列名为variable,其中包含measure.var;一列名为value的值,它是原始数据帧中measure.var的值。由于ggplot2的独特语法,使用melt()函数获得的新数据帧允许ggplot2在同一图中绘制多个参数。

3 ggplot2数据可视化应用程序

通常认为R语言具有四套图形系统,即图形,网格,点阵和ggplot2。其中,图形,网格和点阵被视为基本图形系统。他们的绘图命令是精致,实用和可运行的速度块。生成的图形美观实用,但是基本图形系统的图形非常钝,功能的功能也很复杂。通常在图形上花费很多时间,而不是数据分析。

Ggplot2是2005年之后出现的新图形系统。它提供了统一的界面和一些选项,取代了基本图形系统的复杂修补系统,使用户可以更加关注数据本身。当然,ggplot2还具有大量的低级命令,可以对图形进行细粒度的修改。

3.1数据简单分发

箱形线图是一种显示数据分布的方法。此框的值为25%到75%。方框中的水平线代表中位数。框上方和下方的垂直线表示上方和下方的相邻值。称为外部点。下面显示了使用ggplot2绘制常山县两个站点的二氧化硫年平均分布的箱形图命令。

ggplot(csdatemean,aes(site,so2))+ geom_boxplot()+ xlab(“空气监测站”)+ ylab(表达式(粘贴(“二氧化硫日平均浓度”(mg/m ^ 3)))))p >

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(颜色=” grey60” )+ stat_smooth(方法=LM,SE=F,颜色=”黑色”)+ xlab(表达式(糊(“PM2.5每日平均数据”(mg/m ^ 3))))ylab(表达式(粘贴(“ 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(cs 2014月,aes(时钟,no2)+地理点(aes(大小=o3水平)+xlab(“矩”)+ylab(表达式(糊状物(二氧化氮浓度(mg/m^3))+标度大小(名称=“臭氧浓度水平”)

在这个例子中,geom_point()函数中的size参数将臭氧浓度水平映射到二氧化氮浓度点的大小,这样从图中可以清楚地看到,当臭氧浓度水平为“强”时,通常是在二氧化氮浓度较低的时候。同样,颜色和形状可以用于将分组变量组映射到颜色和形状,以便二维绘图可以显示更多内容。

3.4图形面

数据可视化中最实用的技术之一是将分组后的数据并排呈现,这使得分组间的数据比较变得更加容易。ggplot2称之为facet。在ggplot2中,facet_grid()和facet_wrap()可用于绘制facet。

在2.2.3中,通过使用melt()函数获得csclockmelt数据帧。以下示例使用此数据绘制了24小时内四季二氧化硫、二氧化氮和细颗粒物的分布。顺序如下。

csclockmelt$season<;-因子(csclockmelt$season,levels=c(“春”、“夏”、“秋”、“冬”)

Ggplot(csclockmelt,AES(时钟,值))+ geom_point(AES(形状=可变))+ geom_line(AES(颜色=可变))+ facet_wrap(季节)+ xlab

(“时间”)+ ylab(表达式(粘贴(“浓度值”(mg/m ^ 3)))+ scale_colour_hue(名称=“污染物”,标签=c(“二氧化硫”,“二氧化氮”,“细颗粒“))+ scale_shape(name=“污染物”,labels=c

(“二氧化硫”,“二氧化氮”,“细颗粒”),固体=F)

在该命令中,按季节(s h a p e)对f a c t o r()函数进行排序,将污染物类型映射为散布形状和曲线颜色,facet_wrap()函数自动执行分组变量季节的分面处理。因此,在同一坐标系中获得了四个平行图,这使得可以更直观地比较数据。

4结论

R语言最初是一个统计分析软件包。它擅长绘制,分析数据以及使用数据拟合统计模型。它还在不擅长的领域提供接口,例如复杂的数据存储和大数据处理; ggplot2以其自身的语法而闻名,它无需考虑图形需要填充什么颜色以及使用什么形状的线段来连接散点图,而不必混淆基本图形系统的繁琐参数,也无需花费更多时间数据分析本身。本文中的一些示例考虑了图形的美感和信息的形式性,以及ggplot2中许多底层命令的应用,似乎每种情况下的命令都更为复杂。在实际应用中,它可以大大简化。即使这样,与基本图形系统相比,ggplot2的优点也毋庸置疑。

当然,工具只能是工具,无论哪种工具都不能代替有效数据的积累和大脑思维的视角。如果将气象数据包括在对环境空气质量数据的分析中,则思维角度将更加多样化。数据框中还可以包含一些地方的污染控制工作,以进行分析以评估其有效性;省级和市级监测部门也可以将更多的环境空气自动监测数据用于某些区域性勘探。

上一篇:PVA环境降解方法的探索

最新论文
关于生活污水处理BoT的相关运营思考
交通肇事因逃逸致人死亡问题研究以不作为犯罪角度为切入
关于数字化条件下校园安防体系的研究与实践
关于建筑安装工程造价控制管理问题思考
关于生活污水处理BoT的相关运营思考
“互联网+小学汉语拼音”教学策略解读
课改背景下创新小学语文课堂组织的策略探究
“互联网+小学汉语拼音”教学策略解读
交通肇事因逃逸致人死亡问题研究以不作为犯罪角度为切入
课改背景下创新小学语文课堂组织的策略探究
关于生活污水处理BoT的相关运营思考
“互联网+小学汉语拼音”教学策略解读
热门论文
microRNA对周围神经再生的调节
多媒体教学方式对实现小学语文教学路径创新的作用
从《悬崖》《伪装者》浅析谍战剧与“困难的克服”
关于FSC赛车翼型的选择与二维流场分析
入侵植物春飞蓬的生物检定与化学成分讨论
中职财务管理课堂提问有效性策略探究
关于燃油加油机计量检定过程中的问题分析
临床护理路径在精神分裂症患者中的实践
关于精细化施工管理策略在水利工程施工中的应用
情趣教学对小学体育课堂的影响
会计理论和会计实务对高校教育的实用性比较
公共管理体系与公共道德体系分析
加强对农村小学教学的管理措施探讨
热门标签
日期归档
2019年11月
2019年10月
2019年09月