lecture
website icon
統計繪圖
簡介 直方圖 密度圖 長條圖 折線圖 圓餅圖 散布圖 箱型圖 雷達圖 動畫
×
website icon 資料管理 統計分析 相關資源 巨人肩膀 語法索引 關於作者

簡介

本部分介紹箱型圖,使用到的指令包含:

Facebook Icon Twitter Icon LinkedIn Icon LINE Icon

箱型圖又稱為盒鬚圖,它將一組數據的最大值、最小值、中位數及上下四分位數一目瞭然呈現出來,總結變數的分布情形,是一個非常好判斷集中離散趨勢的圖形。

箱型圖

boxplot()是R Base繪製箱型圖的指令。這裡一樣以鳶尾花資料檔示範如何在R畫出箱型圖。

> data(iris)
> attach(iris)
> boxplot(Sepal.Length~Species, col=c("aquamarine4","aquamarine3","aquamarine2"))

不需多餘設定,ggplot2的geom_boxplot()可以快速畫出箱型圖。

> p<-ggplot(iris, aes(x=Species, y=Sepal.Length, fill=Species))+
+ geom_boxplot()+
+ scale_fill_manual(values=c("aquamarine4","aquamarine3","aquamarine2"))+
+ theme_minimal()+
+ theme(legend.position="none")
> p
R Base箱型圖 ggplot2箱型圖

資料箱型圖

ggplot2有個不錯的功能,可以替箱型圖加上真實資料分布位置,讓我們直接用肉眼看到資料分布,避免箱型圖隱藏資料訊息。要使用這個功能也非常簡單,只要在原本的箱型圖上加上geom_jitter()圖層就可以了。geom_jitter()其實就是geom_point(position="jitter")的快捷方法。

> p<-ggplot(iris, aes(x=Species, y=Sepal.Length, fill=Species))+
+ geom_boxplot()+
+ scale_fill_manual(values=c("aquamarine4","aquamarine3","aquamarine2"))+
+ theme(legend.position="none")+
+ geom_jitter(color="black", size=0.5, alpha=0.8)+
+ theme_minimal()
> p
ggplot2資料箱型圖

群組箱型圖

和長條圖一樣,箱型圖也可以比較兩個變數的分布情形,最常用於醫學統計。這裡我們以R資料庫現成的ToothGrowth資料檔,來介紹群組箱型圖。在R Base中只要用「*」符號將變數相連,就能達到群組效果。

> attach(ToothGrowth)
> boxplot(len~supp*dose, col=c("aquamarine4","aquamarine3"))+

ggplot2群組箱型圖,其實只要將第二個組別設定在fill=variable填色裡即可。

> p<-ggplot(ToothGrowth, aes(x=as.factor(dose), y=len, fill=supp))+
+ geom_boxplot()+
+ scale_fill_manual(values=c("aquamarine4","aquamarine3"))+
+ theme_minimal()
> p
R Base群組箱型圖 ggplot2群組箱型圖

小提琴圖

另一種圖結合了箱型圖與密度圖的優點,可以視覺化資料的分布,因為長得像小提琴(violin)因而得名。R Base裡需要額外下載vioplot套件。

> library(vioplot)
> vioplot(Sepal.Length~Species, data=iris, horizontal=T, col=c("aquamarine4","aquamarine3","aquamarine2"))

一般情況,小提琴圖非常適合大型資料集,用於比較多筆資料的時候,所以習慣上我們會將小提琴圖翻轉。ggplot2有geom_violin可以畫出小提琴圖。

> p<-ggplot(iris, aes(x=Species, y=Sepal.Length, fill=Species))+
+ geom_violin()+
+ scale_fill_manual(values=c("aquamarine4","aquamarine3","aquamarine2"))+
+ coord_flip()+
+ theme_minimal()+
+ theme(legend.position="none")
> p
R Base小提琴圖 ggplot2小提琴圖