摘要:文章對(duì)R語(yǔ)言及ggplot2做了介紹,并通過(guò)一系列實(shí)例描述了它們?cè)诃h(huán)境空氣自動(dòng)監(jiān)測(cè)數(shù)據(jù)的收集、清洗、整理、統(tǒng)計(jì)變換、可視化方面的應(yīng)用,反映出其在數(shù)據(jù)分析中的巨大潛力。
關(guān)鍵詞:R語(yǔ)言;ggplot2;環(huán)境空氣監(jiān)測(cè);監(jiān)測(cè)數(shù)據(jù)分析;可視化 文獻(xiàn)標(biāo)識(shí)碼:A
中圖分類號(hào):X823 文章編號(hào):1009-2374(2015)16-0088-04 DOI:10.13535/j.cnki.11-4406/n.2015.16.043
隨著新《環(huán)境空氣質(zhì)量標(biāo)準(zhǔn)》(GB 3095-2012)的發(fā)布、實(shí)施,全國(guó)各地都在采用環(huán)境空氣自動(dòng)監(jiān)測(cè)以應(yīng)對(duì)其嚴(yán)苛的數(shù)據(jù)有效性要求。環(huán)境空氣自動(dòng)監(jiān)測(cè)系統(tǒng)每天都在產(chǎn)生大量的數(shù)據(jù),如何對(duì)數(shù)據(jù)進(jìn)行有效的統(tǒng)計(jì)分析,成為一個(gè)新的課題。對(duì)數(shù)據(jù)的可視化,是數(shù)據(jù)分析的第一步。本文應(yīng)用R語(yǔ)言及ggplot2圖形繪制包以浙江省常山縣城區(qū)兩個(gè)空氣自動(dòng)站即環(huán)保大樓站及圖書館站2014年全年監(jiān)測(cè)數(shù)據(jù)為例進(jìn)行各種可視化分析,以探討該軟件在空氣質(zhì)量數(shù)據(jù)分析領(lǐng)域應(yīng)用的巨大潛力。
1 軟件準(zhǔn)備
1.1 R語(yǔ)言軟件與擴(kuò)展包
R語(yǔ)言是一種區(qū)分大小寫的解釋性語(yǔ)言,其具有的強(qiáng)大統(tǒng)計(jì)計(jì)算及繪圖能力,是從大數(shù)據(jù)中獲取有用信息的絕佳工具,它提供了Windows、OS X、Linux等各大操作系統(tǒng)下的版本,可以直接從網(wǎng)上免費(fèi)下載、安裝、使用。R語(yǔ)言軟件在基本安裝中提供了大量的數(shù)據(jù)處理、統(tǒng)計(jì)和圖形函數(shù),此外各社區(qū)還開(kāi)發(fā)了數(shù)以千計(jì)的擴(kuò)展包(packages)為R增加了更多令人驚奇的功能,本文用到的ggplot2、plyr、reshape2等即是其中的一部分。
ggplot2是目前R語(yǔ)言中的圖形繪制擴(kuò)展包,它為R語(yǔ)言提供了一個(gè)基于全面而連貫的語(yǔ)法的繪圖系統(tǒng),它由一系列獨(dú)立的圖形部件組成,并能以許多種不同的方式組合起來(lái),使得數(shù)據(jù)分析者能用緊湊的語(yǔ)法輕松繪制出復(fù)雜的圖形,從而使數(shù)據(jù)分析者更能將注意力集中于數(shù)據(jù)分析本身。plyr與reshape2是兩個(gè)功能強(qiáng)大的數(shù)據(jù)整理擴(kuò)展包,它們?yōu)镽語(yǔ)言擴(kuò)展了對(duì)數(shù)據(jù)變換、數(shù)據(jù)變形的功能。
ggplot2軟件包可以在R語(yǔ)言命令提示符后輸入install.packages(“ggplot2”),選擇合適的下載鏡像后,就可以自動(dòng)從網(wǎng)上下載安裝。在Windows操作系統(tǒng)下下載的是二進(jìn)制文件,可以直接使用;在類Unix操作系統(tǒng)下,下載的是包的源代碼,經(jīng)過(guò)編譯后才能使用,但只要具備gcc等編譯工具,安裝都可通過(guò)簡(jiǎn)單的命令完成。在使用前,需要輸入library(ggplot2)或require(ggplot2)調(diào)用該軟件包。plyr包等也是如此。
1.2 Excel
但面對(duì)原始數(shù)據(jù),微軟公司的Excel往往是對(duì)數(shù)據(jù)進(jìn)行清洗、分列的直觀分析利器。各地自動(dòng)監(jiān)測(cè)站采集并導(dǎo)出的原始數(shù)據(jù)往往是xml格式的,而Excel處理這種格式極為得心應(yīng)手。Excel中的數(shù)據(jù)篩選功能可以輕易地刪除大量無(wú)效數(shù)據(jù),分列功能可以將監(jiān)測(cè)日期與時(shí)刻分離以便于下一步的處理,數(shù)據(jù)格式也可以得到統(tǒng)一,將數(shù)據(jù)“另存為”csv格式后即可通過(guò)read.csv()函數(shù)導(dǎo)入R軟件。R軟件也可以通過(guò)write.csv()函數(shù)寫出csv格式的文件與Excel交互使用。
2 數(shù)據(jù)處理
2.1 數(shù)據(jù)的收集與整理
2.2 數(shù)據(jù)的統(tǒng)計(jì)變換
對(duì)數(shù)據(jù)分析的細(xì)化過(guò)程往往就是分組的過(guò)程。2.1節(jié)中為數(shù)據(jù)增加“month”一列即是為數(shù)據(jù)按月份進(jìn)行分組,“site”一列即是為站點(diǎn)分組,“clock”一列即是為數(shù)據(jù)按時(shí)刻進(jìn)行分組。在實(shí)際工作中,分析數(shù)據(jù)的角度不同,分組也是千奇百怪。如可按當(dāng)日溫度差來(lái)分組,也可按平均風(fēng)速的大小來(lái)分組,當(dāng)然也可以按PM2.5日均值大小來(lái)分組來(lái)考察其他觀測(cè)值的情況。
數(shù)據(jù)的變換與變形則是基于統(tǒng)計(jì)以及下一步分析的需要,將數(shù)據(jù)變化成相應(yīng)的形式。
2.2.1 創(chuàng)建分組變量。在數(shù)據(jù)分析過(guò)程中,常常發(fā)現(xiàn)這種情況:組別分的太細(xì)或者需要根據(jù)原數(shù)值內(nèi)容創(chuàng)建分組。
melt()函數(shù)中id.var意為標(biāo)識(shí)變量,即在原數(shù)據(jù)框中需保留的列向量,measure.var意為度量變量,即在原數(shù)據(jù)框中需要融合的列向量。melt()函數(shù)生成的新數(shù)據(jù)框中保留了id.var的同時(shí),生成了兩列:一列名為variable,包含的是measure.var;一列名為value,即原數(shù)據(jù)框中measure.var的值。由于ggplot2的獨(dú)特語(yǔ)法,使用melt()函數(shù)得到的新數(shù)據(jù)框可使ggplot2在同一張圖中繪制多個(gè)參數(shù)。
3 ggplot2數(shù)據(jù)可視化應(yīng)用
一般認(rèn)為R語(yǔ)言有4套圖形系統(tǒng),即graphics、grid、lattice、ggplot2。其中g(shù)raphics、grid、lattice被認(rèn)為是基礎(chǔ)圖形系統(tǒng),它們的繪圖命令精煉、實(shí)用、運(yùn)行速度塊,制出的圖形美觀、實(shí)用,但是基礎(chǔ)圖形系統(tǒng)的制圖方式極為生硬,函數(shù)各參數(shù)繁復(fù),令人往往在繪圖上耗費(fèi)大量的時(shí)間,而不是在數(shù)據(jù)分析上。
ggplot2是2005年后才新出現(xiàn)的圖形系統(tǒng),它提供了統(tǒng)一的接口及一些選項(xiàng),替代了基礎(chǔ)圖形系統(tǒng)那套繁雜的修補(bǔ)體系,令使用者能更多地關(guān)注于數(shù)據(jù)本身。當(dāng)然ggplot2中也有大量底層命令可對(duì)圖形作精細(xì)的修改。
3.1 數(shù)據(jù)的簡(jiǎn)單分布
箱線圖是一種展示數(shù)據(jù)分布的方法,箱內(nèi)為25%~75%的值,箱中的橫線代表中位值,箱子上下豎線表示上下的相鄰值,超過(guò)相鄰值的點(diǎn)稱為外部點(diǎn)。使用ggplot2繪制常山縣兩個(gè)站點(diǎn)二氧化硫全年日均值分布的箱線圖命令如下所示,繪制出的圖形見(jiàn)圖4。
3.2 趨勢(shì)線的添加
在數(shù)據(jù)可視化工作中,參數(shù)與參數(shù)之間往往有著或多或少的關(guān)系,添加趨勢(shì)線是探索這種關(guān)系的一種橋梁。R語(yǔ)言在數(shù)據(jù)分析方面最大的優(yōu)勢(shì)就是其強(qiáng)大的數(shù)據(jù)擬合功能,它提供了線性、非線性、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等大量數(shù)據(jù)擬合工具。這些工具均可以與ggplot2配合使用繪制出趨勢(shì)圖形,以檢驗(yàn)其擬合成果。
3.3 分組變量的體現(xiàn)
在數(shù)據(jù)可視化的過(guò)程中,數(shù)據(jù)分組可以幫助人們揭示更多的細(xì)節(jié)。ggplot2可將在數(shù)據(jù)處理階段創(chuàng)建的分組變量以顏色、形狀、大小等形式映射于圖上。
此例geom_point()函數(shù)中的size參數(shù)將臭氧濃度水平映射到二氧化氮濃度點(diǎn)的大小上,如此從圖中可以明顯可見(jiàn)臭氧濃度水平“強(qiáng)”時(shí),往往是二氧化氮濃度較低時(shí)。類似的還可以用colour、shape等將分組變量的各組別映射為顏色、形狀等,使繪制出的二維圖呈現(xiàn)出更多的內(nèi)容。
3.4 圖形分面
數(shù)據(jù)可視化中最實(shí)用的技術(shù)之一是將分組的數(shù)據(jù)并列呈現(xiàn),這樣可以使得組間數(shù)據(jù)的比較變得容易許多,ggplot2中將之稱為分面(facet)。ggplot2中可以用facet_grid()和facet_wrap()兩個(gè)函數(shù)都可以繪制出分面圖。
2.2.3中利用melt()函數(shù)得到了csclockmelt數(shù)據(jù)框,下例利用該數(shù)據(jù),繪制四季中二氧化硫、二氧化氮、細(xì)顆粒物這三大污染物在24小時(shí)中的分布情況圖,命令如下,得到圖7。
命令中factor()函數(shù)為季節(jié)排序,shape、colour將污染物種類映射至散點(diǎn)形狀、曲線顏色,facet_wrap()函數(shù)自動(dòng)將分組變量season進(jìn)行分面處理。如此在相同的坐標(biāo)系中得到四張并列的圖,可令人更直觀地比較數(shù)據(jù)。
4 結(jié)語(yǔ)
R語(yǔ)言最初時(shí)只是一個(gè)統(tǒng)計(jì)分析軟件包,它擅長(zhǎng)于繪圖、分析數(shù)據(jù)以及利用數(shù)據(jù)來(lái)擬合統(tǒng)計(jì)模型,在不擅長(zhǎng)的領(lǐng)域如復(fù)雜數(shù)據(jù)存儲(chǔ)、大數(shù)據(jù)處理,它也提供了接口;ggplot2以其自成一派的語(yǔ)法聞名,它不需要考慮某圖形需要填充什么顏色,使用什么形狀的線段連接散點(diǎn),不必去糾結(jié)基本圖形系統(tǒng)中那些繁雜的參數(shù),將更多的時(shí)間用于數(shù)據(jù)分析本身。本文中某些例子由于考慮到各圖形的美觀及信息的正式性,在繪制時(shí)應(yīng)用了不少ggplot2中的底層命令,顯得各例中命令較為復(fù)雜。實(shí)際應(yīng)用中均可大大簡(jiǎn)化,即使如此,與基礎(chǔ)圖形系統(tǒng)相比,ggplot2的優(yōu)勢(shì)也盡顯無(wú)疑。
當(dāng)然,工具永遠(yuǎn)只能是工具,無(wú)論什么工具都無(wú)法替代有效數(shù)據(jù)的積累和大腦思考問(wèn)題的角度。各地將氣象數(shù)據(jù)納入環(huán)境空氣質(zhì)量數(shù)據(jù)一起分析時(shí),思考時(shí)角度可以更加多元化;各地的一些污染控制工作內(nèi)容也可以納入數(shù)據(jù)框中作分析,以評(píng)價(jià)其有效性;省、市以上的監(jiān)測(cè)部門更是可以利用更多的環(huán)境空氣自動(dòng)監(jiān)測(cè)數(shù)據(jù)作一些地域性的探索。
參考文獻(xiàn)
[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).
作者簡(jiǎn)介:袁佳(1982-),男,常山縣環(huán)境監(jiān)測(cè)站工程師,研究方向:儀器分析、環(huán)境自動(dòng)監(jiān)測(cè)系統(tǒng)運(yùn)維管理。
(責(zé)任編輯:黃銀芳)