一般針對連續變項的分布情形,通常會使用盒形圖來做視覺化的呈現,盒形圖的組成會包含下左圖所提到的,中位數(median)、上四分位數(25th quantile)、下四分位數(75th quantile)、上邊緣(最大值,maximum)、下邊緣(最小值,minimum)以及可能的異常值(outlier),我們可以透過盒形圖的對稱與否觀察資料的離散程度,也可以檢視資料當中有無不合理的異常值。除此之外,盒形圖也可以用來比較不同組別資料的分布差異,如下右圖所示,一號實驗對象的光速平均而言(中位數約930)比起其他實驗組別要來得快,但資料的分布也比較分散。

 

1.jpg

 

             雖然盒形圖的優點是可真實呈現原始數據的分布情況,也可以用於比較不同母群體的差異,但無法知道數據更進一步的分布情形(例如:是單峰分布還是雙峰分布),為了要在圖形上呈現資料分布的分布細節,可用另一種小提琴圖來呈現,小提琴圖可以呈現盒形圖能提供的資訊外,能額外提供密度函數的樣子,其實小提琴圖就是一種盒形圖加上機率密度圖的組合。使用小提琴圖的優點在於能提供比盒形圖更多的資訊,當資料量大的時候,如果要清楚呈現觀察值的分布情形時,小提琴圖會是一個很好的選擇,也正因為可以提供更多的資訊,往往會干擾閱讀,因此是優點有時也會是缺點之一。

 

2.jpg

 

        上述說明了關於盒形圖以及小提琴圖的基本概念以及比較後,筆者接著要來說明如何透過R去繪製小提琴圖,在畫圖之前需要先去下載”ggplot2” package並載入。
1.匯入畫圖資料
data <- as.data.frame(warpbreaks)

2.初步分組小提琴圖 (將初步圖存成p這個物件,之後用疊圖的方式修改)
p <- ggplot(data, aes(x = tension, y = breaks)) +
  geom_violin()
p #把圖印出來

 

3.jpg

 

3.可以互換X軸跟Y軸
p + coord_flip()

 

 

4.jpg

 


4.不修剪小提琴的尾部
p + geom_violin(trim=FALSE)

 

5.jpg

 

5.添加統計數值在圖上,fun可以選擇平均數或中位數
p + stat_summary(fun= mean, geom = "point", shape = 23, size = 2, color = "blue")

 

6.jpg

 

6.添加盒形圖
p + geom_boxplot(width = 0.1)

 

7.jpg

 

7.改變圖形的顏色
p + geom_violin(aes(color = tension)) #改變小提琴圖外框的顏色
p + geom_violin(aes(fill = tension)) #將小提琴圖填滿顏色
綜合上述提到的一些基本指令,我們可以得到優化後的小提琴圖
p <- ggplot(data, aes(x = tension, y = breaks)) +
  geom_violin(trim=FALSE) +
  geom_violin(aes(color = tension)) +
  geom_boxplot(width = 0.1) +
  stat_summary(fun= mean, geom = "point",shape = 23, size = 2, color = "blue")

 

8.jpg

 

目前的圖形還有一些優化的空間,例如去除背景、X軸跟Y軸的字體大小跟內容、去除格線等等,有興趣的讀者可參考筆者之前寫的文章” R語言繪製cluster error bar plot”,裡面有對於圖形修改更進一步的介紹。

參考資料:

  1. http://www.sthda.com/english/wiki/ggplot2-violin-plot-quick-start-guide-r-software-and-data-visualization
  2. https://r-charts.com/distribution/violin-plot-group-ggplot2/
arrow
arrow
    全站熱搜

    晨晰部落格新站 發表在 痞客邦 留言(0) 人氣()