版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE1R語言及ggplot2在環(huán)境空氣監(jiān)測數(shù)據(jù)可視化中的應(yīng)用隨著新〔環(huán)境空氣質(zhì)量標(biāo)準(zhǔn)〕(GB3095-2012)的發(fā)布、施行,全國各地都在采取環(huán)境空氣自動監(jiān)測以應(yīng)對其嚴(yán)苛的數(shù)據(jù)有效性要求。環(huán)境空氣自動監(jiān)測系統(tǒng)天天都在產(chǎn)生大量的數(shù)據(jù),怎樣對數(shù)據(jù)進(jìn)行有效的統(tǒng)計(jì)分析,成為一個(gè)新的課題。對數(shù)據(jù)的可視化,是數(shù)據(jù)分析的第一步。本文應(yīng)用R語言及ggplot2圖形繪制包以浙江省常山縣城區(qū)兩個(gè)空氣自動站即環(huán)保大樓站及圖書館站2014年全年監(jiān)測數(shù)據(jù)為例進(jìn)行各種可視化分析,以討論該軟件在空氣質(zhì)量數(shù)據(jù)分析領(lǐng)域應(yīng)用的宏大潛力。1軟件預(yù)備1.1R語言軟件與擴(kuò)展包R語言是一種區(qū)分大小寫的解釋性語言,其具有的強(qiáng)大統(tǒng)計(jì)計(jì)算及繪圖能力,是從大數(shù)據(jù)中獲取有用信息的絕佳工具,它提供了Windows、OSX、Linux等各大操作系統(tǒng)下的版本,能夠直接從網(wǎng)上、安裝、使用。R語言軟件在基本安裝中提供了大量的數(shù)據(jù)處理、統(tǒng)計(jì)和圖形函數(shù),除此之外各社區(qū)還開發(fā)了數(shù)以千計(jì)的擴(kuò)展包(packages)為R增長了更多令人驚奇的功能,本文用到的ggplot2、plyr、reshape2等即是其中的一部分。ggplot2是當(dāng)前R語言中的圖形繪制擴(kuò)展包,它為R語言提供了一個(gè)基于全面而連貫的語法的繪圖系統(tǒng),它由一系列獨(dú)立的圖形部件構(gòu)成,并能以很多種不同的方式組合起來,使得數(shù)據(jù)分析者能用緊湊的語法輕松繪制出復(fù)雜的圖形,進(jìn)而使數(shù)據(jù)分析者更能將留意力集中于數(shù)據(jù)分析自己。plyr與reshape2是兩個(gè)功能強(qiáng)大的數(shù)據(jù)整理擴(kuò)展包,它們?yōu)镽語言擴(kuò)展了對數(shù)據(jù)變換、數(shù)據(jù)變形的功能。ggplot2軟件包能夠在R語言命令提示符后輸入install.packages(ggplot2),選擇適宜的下載鏡像后,就能夠自動從網(wǎng)上下載安裝。在Windows操作系統(tǒng)下下載的是二進(jìn)制文件,能夠直接使用;在類Unix操作系統(tǒng)下,下載的是包的源代碼,經(jīng)過編譯后能力使用,但只要具備gcc等編譯工具,安裝都可通過簡單的命令完成。在使用前,需要輸入library(ggplot2)或require(ggplot2)調(diào)用該軟件包。plyr包等也是如此。1.2Excel但面對原始數(shù)據(jù),微軟公司的Excel往往是對數(shù)據(jù)進(jìn)行清洗、分列的直觀分析利器。各地自動監(jiān)測站收集并導(dǎo)出的原始數(shù)據(jù)往往是xml格式的,而Excel處理這種格式極為得心應(yīng)手。Excel中的數(shù)據(jù)挑選功能能夠輕易地刪除大量無效數(shù)據(jù),分列功能能夠?qū)⒈O(jiān)測日期與時(shí)刻分離以便于下一步的處理,數(shù)據(jù)格式可以以得到統(tǒng)一,將數(shù)據(jù)另存為csv格式后即可通過read.csv()函數(shù)導(dǎo)入R軟件。R軟件可以以通過write.csv()函數(shù)寫出csv格式的文件與Excel交互使用。2數(shù)據(jù)處理2.1數(shù)據(jù)的采集與整理在數(shù)據(jù)分析工作中,采集、整理數(shù)據(jù)的時(shí)間往往是占了工作時(shí)間的80%以上。在數(shù)據(jù)采集、整理工作中交互地使用R語言與Excel,可極大地提升工作效率。首先使用Excel將在自動監(jiān)測經(jīng)過中產(chǎn)生的無效數(shù)據(jù)進(jìn)行挑選、剔除,再按需要,對某些數(shù)據(jù)進(jìn)行分列處理,最后導(dǎo)出為csv文件后以便R語言讀取。與Matlab等將一切視為矩陣不同,R語言能夠靈敏地對向量、矩陣、數(shù)組、數(shù)據(jù)框、因子、列表等多種數(shù)據(jù)構(gòu)造進(jìn)行處理。通過read.csv()導(dǎo)入的數(shù)據(jù)都被視為數(shù)據(jù)框(data.frame)。數(shù)據(jù)框是R語言中最常用的數(shù)據(jù)構(gòu)造,其每一列都能夠包括不同形式的數(shù)據(jù),如環(huán)境空氣監(jiān)測數(shù)據(jù)之后,能夠增長名為month的一列,用中文一月份表示該數(shù)據(jù)是一月份的數(shù)據(jù),增長site的一列,用中文標(biāo)注其站點(diǎn)名稱,如假設(shè)hbdl201401為導(dǎo)入的環(huán)保大樓站一月份數(shù)據(jù),用R命令行示例如下:site-rep(環(huán)保大樓站,dim(hbdl201401))month-rep(一月份,dim(hbdl201401))hbdl201401-cbind(hbdl201401,site,month)同一站點(diǎn)中的數(shù)據(jù),能夠使用rbind()函數(shù)進(jìn)行按月合并。當(dāng)多站點(diǎn)數(shù)據(jù)合并時(shí),由于設(shè)備配置的原因,數(shù)據(jù)框中各列的名稱與數(shù)量并不完全一致,使用rbind()合并數(shù)據(jù)時(shí)會出錯(cuò)。如常山縣環(huán)保大樓站除慣例六參數(shù)外還配有碳黑儀、能見度儀、氣象五參數(shù)等,而圖書館站中僅有慣例六參數(shù)。這時(shí)的合并能夠用到merge()函數(shù)。假設(shè)hbdl2014為常山縣環(huán)保大樓站2014年全年小時(shí)均值數(shù)據(jù),而tsg2014為圖書館站數(shù)據(jù),則可用下面命令合并數(shù)據(jù)框:cs2014-merge(hbdl2014,tsg2014,all=T,sort=F)合并后的數(shù)據(jù)框cs2014中在圖書館站中所沒有的碳黑儀等數(shù)據(jù)均以NA(缺失)表示。merge()函數(shù)能夠兩兩合并大量來源不同的數(shù)據(jù)框,只需保證列名的統(tǒng)一,數(shù)據(jù)即可合并無誤。在R語言頂用命令tail(cs2014)即可列出cs2014的最后6行:2.2數(shù)據(jù)的統(tǒng)計(jì)變換對數(shù)據(jù)分析的細(xì)化經(jīng)過往往就是分組的經(jīng)過。2.1節(jié)中為數(shù)據(jù)增長month一列即是為數(shù)據(jù)按月份進(jìn)行分組,site一列即是為站點(diǎn)分組,clock一列即是為數(shù)據(jù)按時(shí)刻進(jìn)行分組。在實(shí)際工作中,分析數(shù)據(jù)的角度不同,分組也是千奇百怪。如可按當(dāng)日溫度差來分組,可以按平均風(fēng)速的大小來分組,當(dāng)然可以以按PM2.5日均值大小來分組來考察其他觀測值的情況。數(shù)據(jù)的變換與變形則是基于統(tǒng)計(jì)以及下一步分析的需要,將數(shù)據(jù)變化成相應(yīng)的形式。2.2.1開創(chuàng)建立分組變量。在數(shù)據(jù)分析經(jīng)過中,經(jīng)常發(fā)現(xiàn)這種情況:組別分的太細(xì)或者需要根據(jù)原數(shù)值內(nèi)容開創(chuàng)建立分組。第一種情況能夠合并組別。例如按氣象學(xué)上的規(guī)定,以每年的三、四、五月為春季,六、七、八月為夏季,九、十、十一月為秋季,十二、一、二月為冬季。需要以季節(jié)分組時(shí),能夠調(diào)用如下命令:cs2014$season[cs2014$month==三月份|cs2014$month==四月份|cs2014$month==五月份]-春cs2014$season[cs2014$month==六月份|cs2014$month==七月份|cs2014$month==八月份]-夏cs2014$season[cs2014$month==九月份|cs2014$month==十月份|cs2014$month==十一月份]-秋cs2014$season[cs2014$month==十二月份|cs2014$month==一月份|cs2014$month==二月份]-冬運(yùn)行上述命令后,數(shù)據(jù)框cs2014中就多了一個(gè)名為season的列,其標(biāo)注了每一行數(shù)據(jù)的季節(jié)。第二種情況能夠用到R語言中的cut()函數(shù)。如原數(shù)據(jù)中各污染物按月份按時(shí)刻進(jìn)行濃度平均得到數(shù)據(jù)框cs2014month后,能夠以0~0.040mg/m3、0.040~0.080mg/m3、0.080mg/m3為區(qū)間將臭氧的時(shí)刻平均數(shù)據(jù)分作3個(gè)組別,分別號為弱、中、強(qiáng),用cut()函數(shù)開創(chuàng)建立分組變量o3level:cs2014month$o3level-cut(cs2014month$o3,breaks=c(0,0.040,0.080,Inf),labels=c(弱,中,強(qiáng)))運(yùn)行上述命令后,數(shù)據(jù)框cs2014month中增長了名為o3level的新列,其標(biāo)注了每一行數(shù)據(jù)中臭氧的濃度水平。2.2.2分組變換。plyr包提供了一整套工具集來處理列表(list)、數(shù)組(array)和數(shù)據(jù)框(data.frame),它能夠?qū)?fù)雜的數(shù)據(jù)分割成幾個(gè)部分,分別對各個(gè)部分進(jìn)行統(tǒng)計(jì)。對于數(shù)據(jù)框的操作,用的是plyr包中的ddply()函數(shù),如:我們?nèi)粝氲玫礁鱾€(gè)站點(diǎn)的各污染因子日均濃度值,則可調(diào)用如下命令:csdatemean-ddply(cs2014,.(date,site),summarise,so2=round(mean(so2,na.rm=TRUE),3),no2=round(mean(no2,na.rm=TRUE),3),co=round(mean(co,na.rm=TRUE),2),pm10=round(mean(pm10,na.rm=TRUE),3),pm2.5=round(mean(pm2.5,na.rm=TRUE),3),o3=round(mean(sort(o3,decreasing=T),na.rm=TRUE),3))其中cs2014指原數(shù)據(jù)框,.(date,site)括號中指的是分組變量(日期、站點(diǎn)),summarise命令意為從原數(shù)據(jù)中總結(jié)出一個(gè)新數(shù)據(jù),round()為小數(shù)位數(shù)修約函數(shù),mean()為平均函數(shù),sort()為數(shù)據(jù)排序函數(shù),命令中臭氧數(shù)據(jù)取其每日最大8小時(shí)平均值,其他污染物均為24小時(shí)平均值。該命令運(yùn)行后就得到了一個(gè)新的數(shù)據(jù)框csdatemean。類似的還能夠用ddply()函數(shù)針對月份以及其他分類變量進(jìn)行分組統(tǒng)計(jì)。如2.2.1節(jié)中提到的cs2014month,就能夠調(diào)用如下命令得到:cs2014month-ddply(cs2014,.(clock,month),summarise,so2=round(mean(so2,na.rm=TRUE),3),no2=round(mean(no2,na.rm=TRUE),3),co=round(mean(co,na.rm=TRUE),2),pm10=round(mean(pm10,na.rm=TRUE),3),pm2.5=round(mean(pm2.5,na.rm=TRUE),3),o3=round(mean(o3,na.rm=TRUE),3))除此之外,plyr包還提供了一些靈敏的函數(shù)如transform等用于組間數(shù)值的統(tǒng)計(jì),詳見plyr包的自帶說明。2.2.3數(shù)據(jù)變形。reshape2包提供的melt()和dcast()函數(shù)實(shí)現(xiàn)的是類似于Excel中數(shù)據(jù)透視表的功能,可從冗雜的數(shù)據(jù)中摘取出想要的信息。其中melt()函數(shù)能夠?qū)⒍嗔袛?shù)據(jù)挑選后融合在一起,即從寬變長,下面舉例說明:csclockmean-ddply(cs2014,.(clock,season),summarise,so2=round(mean(so2,na.rm=TRUE),3),no2=round(mean(no2,na.rm=TRUE),3),co=round(mean(co,na.rm=TRUE),2),pm10=round(mean(pm10,na.rm=TRUE),3),pm2.5=round(mean(pm2.5,na.rm=TRUE),3),o3=round(mean(o3,na.rm=TRUE),3))csclockmelt-melt(csclockmean,id.var=c(clock,season),measure.var=c(so2,no2,pm2.5))履行以上命令后,先得到一個(gè)名為csclockmean的數(shù)據(jù)框,再通過melt()函數(shù)得到一個(gè)名為csclockmelt的新數(shù)據(jù)框,用head()函數(shù)分別讀取兩個(gè)數(shù)據(jù)框的前6行:melt()函數(shù)中id.var意為標(biāo)識變量,即在原數(shù)據(jù)框中需保留的列向量,measure.var意為度量變量,即在原數(shù)據(jù)框中需要融合的列向量。melt()函數(shù)生成的新數(shù)據(jù)框中保留了id.var的同時(shí),生成了兩列:一列名為variable,包括的是measure.var;一列名為value,即原數(shù)據(jù)框中measure.var的值。由于ggplot2的獨(dú)特語法,使用melt()函數(shù)得到的新數(shù)據(jù)框可使ggplot2在同一張圖中繪制多個(gè)參數(shù)。3ggplot2數(shù)據(jù)可視化應(yīng)用一般以為R語言有4套圖形系統(tǒng),即graphics、grid、lattice、ggplot2。其中g(shù)raphics、grid、lattice被以為是基礎(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中也有大量底層命令可對圖形作精細(xì)的修改。3.1數(shù)據(jù)的簡單分布箱線圖是一種展現(xiàn)數(shù)據(jù)分布的方法,箱內(nèi)為25%~75%的值,箱中的橫線代表中位值,箱子上下豎線表示上下的相鄰值,跨越相鄰值的點(diǎn)稱為外部點(diǎn)。使用ggplot2繪制常山縣兩個(gè)站點(diǎn)二氧化硫全年日均值分布的箱線圖命令如下所示。ggplot(csdatemean,aes(site,so2))+geom_boxplot()+xlab(空氣自動監(jiān)測站點(diǎn))+ylab(expression(paste(二氧化硫日均濃度(mg/m^3))))ggplot2有其特殊的語法,其特點(diǎn)是+號,任何圖層都能夠通過+號來實(shí)現(xiàn)。geom_boxplot()是ggplot2中繪制箱線圖的函數(shù),類似的還有g(shù)eom_point()(繪制散點(diǎn)圖)、geom_line()(繪制折線圖)、geom_histogram()(繪制條形圖)等。xlab()添加的是x軸上的文字說明,ylab()中的expression()函數(shù)是為了在圖中實(shí)現(xiàn)mg/m3的表達(dá)式。3.2趨勢線的添加在數(shù)據(jù)可視化工作中,參數(shù)與參數(shù)之間往往有著或多或少的關(guān)系,添加趨勢線是探尋求索這種關(guān)系的一種橋梁。R語言在數(shù)據(jù)分析方面最大的優(yōu)勢就是其強(qiáng)大的數(shù)據(jù)擬合功能,它提供了線性、非線性、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等大量數(shù)據(jù)擬合工具。這些工具均能夠與ggplot2配合使用繪制出趨勢圖形,以檢驗(yàn)其擬合結(jié)果。下例使用ggplot2中的stat_smooth()函數(shù)自動添加趨勢線來探尋求索PM2.5與PM10數(shù)據(jù)間的關(guān)系。ggplot(csdatemean,aes(pm2.5,pm10))+geom_point(colour=grey60)+stat_smooth(method=lm,se=F,colour=black)+xlab(expression(paste(PM2.5日均數(shù)據(jù)(mg/m^3))))+ylab(expression(paste(PM10日均數(shù)據(jù)(mg/m^3))))在geom_point()和stat_smooth()兩個(gè)函數(shù)中添加顏色參數(shù),以使得散點(diǎn)圖顯得顏色淡一點(diǎn),而讓趨勢線更明顯。stat_smooth()函數(shù)中method=lm指按直線方式添加趨勢線。從圖5中明顯可見PM2.5與PM10呈現(xiàn)了一種極強(qiáng)的線性關(guān)系。3.3分組變量的具體表現(xiàn)出在數(shù)據(jù)可視化的經(jīng)過中,數(shù)據(jù)分組能夠幫助人們揭示更多的細(xì)節(jié)。ggplot2可將在數(shù)據(jù)處理階段開創(chuàng)建立的分組變量以顏色、形狀、大小等形式映射于圖上。如2.2.2節(jié)中得到了各污染物按月份的時(shí)刻濃度平均數(shù)據(jù)cs2014month,2.2.1節(jié)頂用cut()函數(shù)將該數(shù)據(jù)框中臭氧濃度分為弱、中、強(qiáng)三個(gè)水平,用ggplot2繪制出二氧化氮的時(shí)刻濃度圖,并用圖中二氧化氮濃度點(diǎn)的大小來代表臭氧的濃度水平,命令如下:ggplot(cs2014month,aes(clock,no2))+geom_point(aes(size=o3level))+xlab(時(shí)刻)+ylab(expression(paste(二氧化氮濃度(mg/m^3))))+scale_size_discrete(name=臭氧濃度水平)此例geom_point()函數(shù)中的size參數(shù)將臭氧濃度水平映射到二氧化氮濃度點(diǎ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í)中的分布情況圖,命令如下。csclockmelt$season-factor(csclockmelt$season,levels=c(春,夏,秋,冬))ggplot(csclockmelt,aes(clock,value))+g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GBT 31424-2015 煤灰黏度測定方法》專題研究報(bào)告
- 某著名企業(yè)發(fā)展戰(zhàn)略
- 《GBT 17999.4-2008 SPF雞 微生物學(xué)監(jiān)測 第4部分:SPF雞 血清平板凝集試驗(yàn)》專題研究報(bào)告
- 《GBT 21929-2008泰格閉口杯閃點(diǎn)測定法》專題研究報(bào)告
- 道路安全培訓(xùn)體會心得課件
- 2026年海南省??谑休o警考試題庫含答案
- 2026年廣西壯族自治區(qū)賀州市輔警考試試卷及答案
- 道口工人身安全培訓(xùn)課件
- 2024版多協(xié)會非心臟手術(shù)圍手術(shù)期心血管管理指南解讀課件
- 返崗復(fù)工安全培訓(xùn)要求課件
- 2022年中國工藝美術(shù)館招聘考試真題
- 輔導(dǎo)員工作的職責(zé)與使命課件
- 防造假管理程序文件
- ktv股東合作協(xié)議書
- 2023年北京海淀區(qū)高三一?;瘜W(xué)試題及答案
- 腫瘤內(nèi)科靜脈給予抗腫瘤藥物評價(jià)標(biāo)準(zhǔn)
- 醫(yī)療器械生產(chǎn)質(zhì)量管理規(guī)范無菌醫(yī)療器械實(shí)施細(xì)則和檢查評定標(biāo)準(zhǔn)
- 吊籃租賃安拆分包合同
- GB/T 20728-2006封閉管道中流體流量的測量科里奧利流量計(jì)的選型、安裝和使用指南
- FZ/T 54033-2010錦綸6高取向絲(HOY)
- 六年級英語上冊-Unit-5-What-does-he-do單元整體分析-人教PEP
評論
0/150
提交評論