
ggplot2由Hadley Wickham開發(fā),是一個(gè)功能強(qiáng)大且十分靈活的包,可以說(shuō)它是R中繪圖的主陣地,很好地闡釋了什么叫“圖形美學(xué)”。
ggplot2最主要的優(yōu)點(diǎn)在于它采取圖層設(shè)計(jì)的方式進(jìn)行繪圖,簡(jiǎn)單來(lái)說(shuō)ggplot2的繪圖是通過(guò)圖層之間的疊加實(shí)現(xiàn)的,而這個(gè)疊加就是通過(guò) + 實(shí)現(xiàn)的,這在很大程度上有利于結(jié)構(gòu)化思維繪圖。一般來(lái)說(shuō)ggplot2繪圖的基本語(yǔ)法結(jié)構(gòu)如下所示
ggplot(data = <data>, mapping = aes(<mappings>) +
#創(chuàng)建了面板,并不出現(xiàn)圖形
geom_xxx() | stat_xxx() + #出現(xiàn)圖形元素
scale_xxx() + #度量調(diào)整
coord_xxx() + #坐標(biāo)變換,默認(rèn)為直角坐標(biāo)系
facet_xxx() + #圖形分面系統(tǒng)
guides() + #圖例調(diào)整
theme() #主題設(shè)定
其中,前兩個(gè)元素對(duì)于ggplot2繪圖來(lái)說(shuō)是必須的,不然不會(huì)出現(xiàn)圖形元素,后面5個(gè)為可選元素,主要用于圖形的美化和個(gè)性化要求的實(shí)現(xiàn)。
geom_xxx()和stat_xxx()
geom_xxx()為幾何對(duì)象函數(shù),stat_xxx()為統(tǒng)計(jì)變換函數(shù),我們一般使用幾何對(duì)象函數(shù),只有當(dāng)我們?cè)诶L圖時(shí)涉及到統(tǒng)計(jì)變換才會(huì)用到stat_xxx()函數(shù),比如我們要繪制帶有誤差線的均值散點(diǎn)圖。geom_xxx()函數(shù)太多了,這里先不一一列舉了,后面實(shí)戰(zhàn)時(shí)慢慢帶入吧!
stat_xxx()函數(shù)主要是在數(shù)據(jù)被繪制出來(lái)之前對(duì)其進(jìn)行統(tǒng)計(jì)計(jì)算,不同的計(jì)算方法會(huì)產(chǎn)生不同的計(jì)算結(jié)果,所以stat()函數(shù)必定是與geom()函數(shù)存在一個(gè)對(duì)應(yīng)的關(guān)系,不然你統(tǒng)計(jì)變換又有什么意義呢?每一個(gè)圖層基本上都包含一個(gè)幾何對(duì)象和一個(gè)統(tǒng)計(jì)變換,也就是說(shuō):每一個(gè)以geom_xxx()開頭的幾何對(duì)象都含有一個(gè)stat參數(shù),同時(shí),每一個(gè)以stat_xxx()開頭的幾何對(duì)象也都會(huì)有一個(gè)geom參數(shù)。實(shí)際上,geom_xxx()的參數(shù)里面會(huì)有一個(gè)默認(rèn)的選項(xiàng):stat = 'identity',就是默認(rèn)不進(jìn)行統(tǒng)計(jì)變換。
scale_xxx()
用于控制變量映射到視覺(jué)對(duì)象的具體細(xì)節(jié),比如坐標(biāo)軸、透明度、輪廓色、填充色、形狀等信息。具體我們會(huì)在后面的實(shí)戰(zhàn)中接續(xù)說(shuō)明。
coord_xxx()
在生物學(xué)繪圖當(dāng)中,常用的坐標(biāo)系包括直角坐標(biāo)系,也稱作笛卡兒坐標(biāo)系,以及極坐標(biāo)系。其中g(shù)gplot2的直角坐標(biāo)系包括coord_cartesian()、coord_fixed()、coord_flip()以及coord_trans(),默認(rèn)為第一個(gè),coord_fixed()能夠讓我們固定縱橫比(華夫餅圖和復(fù)合型散點(diǎn)餅圖),coord_flip()能夠翻轉(zhuǎn)坐標(biāo)系,coord_trans()坐標(biāo)系的坐標(biāo)軸上刻度比例尺是變化的,例如數(shù)據(jù)點(diǎn)在某個(gè)軸方向上是變化的,不便于觀察,這個(gè)時(shí)候就可以通過(guò)改變比例尺來(lái)進(jìn)行調(diào)節(jié),使數(shù)據(jù)點(diǎn)集中顯示,更加方便觀察。
同時(shí),ggplot2能夠通過(guò)coord_polar()將直角坐標(biāo)系轉(zhuǎn)換為極坐標(biāo)系,具體語(yǔ)句為:
coord_polar(theta = 'x',start = 0,direction = 1,clip = 'on')
theta表示要極坐標(biāo)化的中心軸,即將X軸轉(zhuǎn)換為圓周;direction表示排列方向,1表示順時(shí)針。
theme()
在主題方面,一般會(huì)選擇套用現(xiàn)成的模板,比如ggsci就是專門為學(xué)術(shù)圖表開發(fā)的。ggplot2自帶的主題也很多,包括theme_gray()、theme_bw()、theme_light()、theme_test()以及theme_classic(),學(xué)術(shù)圖表一般推薦theme_test()和theme_classic()。
還有很多參數(shù),只能在實(shí)戰(zhàn)中慢慢帶入咯~