因為做事情不喜歡拖拖拉拉,是以打算每次啃一章,一個月啃完這本書。
建立一個正式的文法系統包括:資料集,幾何對象,映射集合,統計變換,位置調整,坐标系和分面。
ggplot2的核心思想是圖層和映射
一 資料集ggplot(data=mpg)
畫出來的一片白,作用是将資料集載入。
二 幾何對象
總結一下ggplot2的幾種常用的集合對象,剩下的各種圖形基本上都是在此基礎的變化。如氣泡圖是點圖的變化,餅狀圖是bar圖的變化geom_line線圖
geom_point點圖
geom_histogram柱狀圖
geom_boxplot箱線圖
geom_barbar圖
geom_smooth平滑曲線圖
三 映射
将橫軸和縱軸,按照幾何對象的種類,映射到圖形上,就完成了畫圖的主要過程。散點圖ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy))
想用不同的顔色代表分類,就多映射一個變量ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,color=class))
四 統計變換
以條形圖為例ggplot(data=diamonds)+geom_bar(mapping=aes(x=cut))
我們并沒有映射Y軸,但是為什麼Y軸有數值呢?這是因為内部進行了統計變換
統計變換:stat(statistical transformation)
如果我們?geom_bar,就會發現:
stat的預設值是count,也就是計數。也就是說,geom_bar内部是做過統計變換的,用的方法是count。
如果将geom_point換成stat_countggplot(data=diamonds)+stat_count(mapping=aes(x=cut))
我們會發現,畫出的圖形是一樣的。
五 位置調整a
b
library(cowplot)
plot_grid(a,b)
注:fill是将顔色映射到柱形圖内部,而color是将顔色映射到輪廓。通過position的參數變換,可以調整柱形圖的位置。ggplot(diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity),position="fill")
ggplot(diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity),position="identity")
ggplot(diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity),position="dodge")
同理,我們發現,由于資料是處理好精确到個位的,畫散點圖時可能會出現不同的點堆疊到一起了,效果不是很好。于是加一個jitter随機擾動ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy),position="jitter)
六 坐标軸
coord_flip 将坐标軸橫過來ggplot(data=mpg,mapping=aes(x=class,y=hwy))+geom_boxplot()+coord_flip()
coord_polar 将條形圖轉化成餅圖ggplot(diamonds)+geom_bar(mapping=aes(x=cut,fill=cut),show.legend = F,width=1)+coord_polar()
六 分面ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy))+facet_wrap(~class,nrow=2)
按照某個橫縱坐标分面ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy))+facet_grid(drv~cyl)
作者:PriscillaBai
連結:https://www.jianshu.com/p/6d61fc60b4be