天天看點

r語言導入ggplot2_R語言-初識ggplot2

因為做事情不喜歡拖拖拉拉,是以打算每次啃一章,一個月啃完這本書。

建立一個正式的文法系統包括:資料集,幾何對象,映射集合,統計變換,位置調整,坐标系和分面。

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))

r語言導入ggplot2_R語言-初識ggplot2

想用不同的顔色代表分類,就多映射一個變量ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,color=class))

r語言導入ggplot2_R語言-初識ggplot2

四 統計變換

以條形圖為例ggplot(data=diamonds)+geom_bar(mapping=aes(x=cut))

r語言導入ggplot2_R語言-初識ggplot2

我們并沒有映射Y軸,但是為什麼Y軸有數值呢?這是因為内部進行了統計變換

統計變換:stat(statistical transformation)

如果我們?geom_bar,就會發現:

r語言導入ggplot2_R語言-初識ggplot2

stat的預設值是count,也就是計數。也就是說,geom_bar内部是做過統計變換的,用的方法是count。

如果将geom_point換成stat_countggplot(data=diamonds)+stat_count(mapping=aes(x=cut))

r語言導入ggplot2_R語言-初識ggplot2

我們會發現,畫出的圖形是一樣的。

五 位置調整a

b

library(cowplot)

plot_grid(a,b)

r語言導入ggplot2_R語言-初識ggplot2

注:fill是将顔色映射到柱形圖内部,而color是将顔色映射到輪廓。通過position的參數變換,可以調整柱形圖的位置。ggplot(diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity),position="fill")

r語言導入ggplot2_R語言-初識ggplot2

ggplot(diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity),position="identity")

r語言導入ggplot2_R語言-初識ggplot2

ggplot(diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity),position="dodge")

r語言導入ggplot2_R語言-初識ggplot2

同理,我們發現,由于資料是處理好精确到個位的,畫散點圖時可能會出現不同的點堆疊到一起了,效果不是很好。于是加一個jitter随機擾動ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy),position="jitter)

r語言導入ggplot2_R語言-初識ggplot2

六 坐标軸

coord_flip 将坐标軸橫過來ggplot(data=mpg,mapping=aes(x=class,y=hwy))+geom_boxplot()+coord_flip()

r語言導入ggplot2_R語言-初識ggplot2

coord_polar 将條形圖轉化成餅圖ggplot(diamonds)+geom_bar(mapping=aes(x=cut,fill=cut),show.legend = F,width=1)+coord_polar()

r語言導入ggplot2_R語言-初識ggplot2

六 分面ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy))+facet_wrap(~class,nrow=2)

r語言導入ggplot2_R語言-初識ggplot2

按照某個橫縱坐标分面ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy))+facet_grid(drv~cyl)

r語言導入ggplot2_R語言-初識ggplot2

作者:PriscillaBai

連結:https://www.jianshu.com/p/6d61fc60b4be