ggplot2(三) 語法 part1

關於ggplot2的語法基礎- 圖層

首先繪製一張最簡單的統計圖:



qplot(displ, hwy, data = mpg, colour = factor(cyl))



量化:

在R中繪圖時,我們往往用下表的格式來存儲數據:


但是,這種格式對於計算機來說是毫無意義的。我們需要將數據單元(如,單位耗油量、氣缸數)轉化成計算機可以顯示的物理單元(如,像素,顏色)。這個過程就被稱作量化。但是,對於計算機而言有意義的數據我們又不一定能理解:顏色用四位十六進制數來表示,數字代表大小,整數代表一種形狀。

在這一例中,我們有三個需要被量化的外觀參數:水平位置(x),垂直位置(y)以及顏色。在這一例子中,對於位置的量化比較簡單,因爲我們用的是默認的線性量表。我們只需要將數據線性映射到0到1的範圍內即可。這裏我們用0到1的範圍而不是實際的像素值,因爲ggplot2應用的grid繪圖體系會自動完成後續的轉化。最後要將x與y結合從而定位數據點,這一步由座標系統(coord)完成。大多數情況下會採用笛卡爾座標系,但有時也會用到極座標系,繪製地圖時會用到球形投影。

顏色的添加過程更加複雜一些,因爲結果是非數值型的。然而,與人眼對於顏色的識別機制類似,計算機對顏色的編碼也由三部分構成,這三部分構成一個三維的顏色空間。量化顏色也就轉化爲了找到特定顏色在該空間所對應的點。實現這一過程的方法有很多種,但是由於cyl是一個離散變量,我們可以在顏色空間上均勻的找到點來表示這些顏色,結果如下圖所示。對於連續變量的轉化與此並不相同。


上表所示的數據是計算機可以識別的。我們也將轉化過的外觀參數添加了上去。這樣每一個點都已經被很好地定義過,R就可以將他們一一畫下來了。

最後,我們就可以用這些元素畫出想要的圖形了。一個完整的圖形往往包含以下幾部分:點所代表的數據,量表以及座標系和附註。量表和座標系繪製座標軸以及圖例,這樣我們就可以從圖中讀出參數。附註添加圖的名稱和一些背景信息。

更復雜的圖形:

瞭解了簡單模型以後,下面我們看看稍微複雜一點的情況吧。下面的圖形在一開始的基礎上添加了新的元素:分面,多個圖層以及統計數據。分面和圖層擴展了上面提到的數據結構:每一個分面的每一個圖層都有屬於自己的數據集。你可以將它想象成是一個三維的數組:分面構成了二維平面,然後圖層給予其在新的維度上的擴展。在這個例子中,不同圖層上的數據是一樣的,但是從理論上來講,不同的圖層中可以有不同的數據。

qplot(displ, hwy, data=mpg, facets = . ~ year) + geom_smooth()


下表是每個分面上的幾行數據:


平滑圖層與散點圖圖層的不同之處在於它不顯示原始的數據,而是給出了統計方法處理過後的結果。而且,平滑圖層會給出擬合的平滑曲線,這要求額外的步驟:在被轉化成其對應的外觀參數之後,數據將會由stat進行統計轉化,對其進行一些非常有用的處理。在本例中,stat對數據進行loess平滑處理,並返回在自變量範圍內的預測值。(其他有用的統計轉化:1 and 2d binning, group means, quantile regression and contouring)

除了需要更多的步驟對數據進行處理,我們也需要一些額外的步驟對量表進行處理。因爲我們現在有多個數據集(不同的分面,不同的圖層),我們需要保證個數據集間的量表保持一致。量化的過程分爲三步:轉換,訓練和對應。我們之前沒有提到過轉換,但是在做log-log圖時有用到過。在log-log圖中,數據與座標並不是線性對應的,而是要先經過對數轉換。

量化在統計之前,因此stat是對量化後的數據進行的處理。這樣可以保證在線性座標系中log(x) vs. log(y)與對數座標系中x vs. y的一致性。還有很多其他的轉換可供選擇:如平方根轉換,對數轉換和倒數轉換。

統計過後,量表會在所有的圖層和分面上進行調整。調整過程結合所有數據集以獲得最終的取值範圍。沒有這一步,量表只對局部的數據有意義,而且由於無法對應,我們不能疊加不同的圖層。有時,不同分面之間的量表可能不需要調整(但不同圖層間必須調整)。

最後,量表與數據一一對應。這是一個局部過程:他們形成一個新的數據集。

流程示意圖:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章