在R語言中,有很多函數可以描繪數據的分布規律,如利用geom_boxplot繪製箱線圖,用geom_histogram繪製直方圖,利用geom_violet繪製小提琴圖,利用geom_jitter繪製抖動圖等等。然而這些函數大多只能反映數據分布的部分規律和特徵。在實際數據分析時,往往需要多個函數圖形組合在一起,才能完整的描述一組數據的整體特徵。
本文主要介紹ggforce程序包的geom_sina函數,結合箱線圖和小提琴圖,以反映數據的分布規律及其特徵。
1. 產生數據集
以下代碼產生了一個df數據集,包含三個樣本數據。三個樣本均包含500個隨機產生的正態分布數據,產生三個樣本的正態總體的均數分別為8,6和4,方差均為1。
2. 繪製小提琴圖、箱線圖和抖動圖
小提琴圖、箱線圖和抖動圖是繪製數據分布規律的常用函數組合。下提琴圖展示數據核密度分布,箱線圖反映數據的集中和離散程度,抖動圖展示樣本數據點的數目分布。具體如下圖所示:
3. geom_sina函數
ggplot2的擴展程序ggforce中,提供了一個函數geom_sina。該函數既可以反映數據的核密度分布,又可以直觀展示數據樣本點的具體數目。因此該函數可以看做是geom_violet和geom_jitter函數的組合。
上圖為三個樣本數據的geom_sina函數繪圖結果。在點集的中心位置表示數據的平均數,而在垂直方向上點集的長度反映了數據的離散程度。樣本各數據點以核密度的形式分布排列,因此可以反映樣本整體的分布規律,以及在每個區段中數據點的數目。
4. geom_sina與箱線圖和小提琴圖的組合
雖然上圖反映的數據特徵比較全面,但從視覺上稍顯蒼白,不夠直觀。因此在geom_sina核密度點圖的基礎上,添加小提琴圖和箱線圖,予以補充,代碼如下:
以上代碼中,把小提琴圖放在最下一層,然後繪製箱線圖,在箱線圖之上繪製geom_sina圖。由於三個樣本的數據點比較密集,會遮擋下面圖層的顯示,故將geom_sina函數的透明度設置為alpha=0.3,具體效果如下圖。
上圖中的顏色搭配仍需斟酌,但單純從圖片的視覺效果來看,geom_sina似乎不及geom_boxplot實用。在數據分析時,箱線圖仍然是描述數據特徵的首選。