changed 4 years ago
Published Linked with GitHub

盒鬚圖(Boxplot) 中顯示最大最小值 R 繪製方法

LHB阿好伯, Jan 26, 2019

tags: 可視化

最近一位朋友詢問在Sigmaplot中無法顯示最大最小值

一圖勝千表_數據可視化_基本圖表篇中有介紹到

箱型圖是一種用作顯示一組數據分散情況資料的統計圖

盒鬚圖可以呈現許多資訊例如集中趨勢(中位數,平均值和分布模式)

用來比較群組間的差異是很好的

在Sigmaplot中預設是會顯示離群值(outlier)

而離群值並不是最大或最小值

這邊用一個範例來看在第8廠的地方有一個29的數值

但在盒鬚圖中並沒辦法顯示出來

Sigmaplot試過一些方法都無法解決

最後利用R來處理

一圖勝千表_數據可視化_基本圖表篇中也有提到一圖形稱為小提琴圖(violin plot)算是盒鬚圖的變形

也可以用來顯示資料的分布但並不是敘述統計上的資訊

而是實際的數值分布情況結果如下


數據準備另存成CSV檔

廠商 次數
1廠 3
1廠 7
: :
2廠 6
2廠 4
: :
3廠 6
: :
: :
11廠 4

R程式碼

install.packages("ggplot2") #安裝ggplot2套件 library(ggplot2) #載入ggplot2套件 Data_flie <- file.choose() #選取檔案位址 PointData <- read.csv(Data_flie) #讀取檔案 PointData <- data.frame(PointData) #轉換成為Data from qplot(廠商,次數,data = PointData,geom = "violin",fill = 廠商,main = "各廠家點數") #繪製小提琴圖

最後一行改成

qplot(廠商,次數,data = PointData,geom = "violin",fill = 廠商,main = "各廠家點數") + geom_dotplot(binaxis='y', stackdir='center', dotsize=0.3)

可以更加明確地呈現出其資料的分布

R的優點在於其可編程其變化較多

例如將boxplot中添加上圖中的資料點也可以

只需要將geom = "violin"改成geom = "boxplot"

qplot(NAME,NUM,data = PointData, + geom = "boxplot",fill = NAME,main = "各廠家點數") + geom_dotplot(binaxis='y', stackdir='center', + dotsize=0.3)

有時候大家也會用添加一些亂數排列的方式來呈現分布

將 geom_dotplot(binaxis='y', stackdir='center', dotsize=0.3)
改成
geom_jitter(height = 0.2, width = 0.2)

geom_jitter(height = 0.2, width = 0.2)

Excel、Origin、Sigmaplot、GraphPad等軟體,

不需要編程、只要點擊介面按鈕就可以繪製圖表,卻喪失一定的靈活性。

你可以改變顏色、字體和標題,但僅限於軟體所提供的那些元素。

這些軟體只能由你去適應它的操作規則、讓你使用現有的圖表,

而並不能創造新的圖表

像R、Matlab、Python等軟體,需要編程才能實現圖表的繪製,

這些軟體本身包含很多數據可視化的函數(function)或者包(package)

掌握代碼與算法,你也可以自己編寫函數設計新穎的圖表。

有機會一定推薦大家都學習R當作繪圖軟體的主力

想學習的可以參考R語言網路免費基礎資料與個人推薦書單

全文分享至

https://www.facebook.com/LHB0222/

有疑問想討論的都歡迎於下方留言

喜歡的幫我分享給所有的朋友 \o/

有所錯誤歡迎指教

Select a repo