


摘要:文章對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-),男,常山縣環境監測站工程師,研究方向:儀器分析、環境自動監測系統運維管理。
(責任編輯:黃銀芳)