iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 19
1
Big Data

R語言與機器學習見面會系列 第 19

Day19 R語言小提琴圖(Violin Plot)

  • 分享至 

  • xImage
  •  

媽媽說,學音樂的小孩不會變壞,在提琴樂器中,小提琴的音域和音量都是提琴家族裡最厲害的,也很方便攜帶,學拉小提琴也可以讓我們培育多一些古典音樂氣息,這種氣息通常還帶一點藝術,在R語言工程師這裡我們也能培養的,來試試Violin plot

小提琴圖(Violin plot)和箱形圖(box plot)很類似,箱形圖的方形可以顯示出Q1、Q3兩個4分位數,小提琴圖則可以強化資料分佈密度(Density)來展示圖形

ggpot2小提琴圖函式

geom_violin(mapping = NULL, data = NULL, stat = "ydensity", position = "dodge", trim = TRUE,  
  scale = "area", ...) 

http://docs.ggplot2.org/0.9.3.1/geom_violin.html

我們在資料夾MyR新增一支Day19.R

http://ithelp.ithome.com.tw/upload/images/20161219/20103434xHYlDTgLdS.png

小提琴圖


在Day19.R中輸入程式碼

#載入gcookbook(取得男女生身高體重數據) 
library(gcookbook) 
# Base plot 
p <- ggplot(heightweight, aes(x = sex, y = heightIn)) 
p + geom_violin() 

執行結果
http://ithelp.ithome.com.tw/upload/images/20161219/20103434EeBUfhvLbr.png

我們這邊刻意將ggplot(heightweight, aes(x = sex, y = heightIn))指派給p變數,
p就像一張畫紙,我們再將想要呈現的圖一層一層疊上去。

和箱型圖結合

ggpolt在繪製圖型時是以一種圖層式的概念在畫的,圖層間可以用+來堆疊上去。
下面我們試試看把violingeom_boxplot疊起來。

在Day19.R中輸入程式碼

p + geom_violin() + geom_boxplot(width=.1, fill="black", outlier.colour=NA) + 
stat_summary(fun.y=median, geom="point", fill="white", shape=21, size=2.5) 

執行結果

http://ithelp.ithome.com.tw/upload/images/20161219/20103434TuTj8wvKkD.png

可以和箱形圖比較,感覺不像小提琴,比較東港漁港邊的烤魷魚。

和點圖(Dot plot)結合

在Day19.R中輸入程式碼

p + geom_violin() + geom_boxplot(width = .1, fill = "black", outlier.colour = NA) + 
geom_dotplot(binaxis = "y", binwidth = .5, stackdir = "center") 

執行結果

http://ithelp.ithome.com.tw/upload/images/20161219/20103434p5JMP7fqey.jpg

調整圓滑程度


# More smoothing 
p + geom_violin(adjust = 2) 

執行結果
http://ithelp.ithome.com.tw/upload/images/20161219/20103434kY8DZlOzsB.jpg


小提琴之城Cremona沒機會去,只好用Cremona附近的verona(維洛那),茱麗葉的故居。

http://ithelp.ithome.com.tw/upload/images/20161219/20103434GP39u88pK4.png
攝於2011.10 verona.italy

學寫程式的工程師也不會變壞。

參考:

http://docs.ggplot2.org/0.9.3.1/geom_violin.html
R Graphics Cookbook


上一篇
Day18 R語言箱型圖(Box)
下一篇
Day20 R語言散佈圖(Scattper Plot)
系列文
R語言與機器學習見面會30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言