R數(shù)據(jù)可視化2:箱形圖 Boxplot

日更已經(jīng)是不可能的了,讓我向周更靠齊。本節(jié)我們來(lái)講箱形圖(Box-plot)。

什么是箱形圖

箱形圖(Box-plot)是一種用作顯示一組數(shù)據(jù)分散情況的統(tǒng)計(jì)圖,因形狀如箱子而得名。除了生信領(lǐng)域,該圖在其他領(lǐng)域也經(jīng)常被使用。主要用于反映原始數(shù)據(jù)分布的特征,并且可以進(jìn)行多組數(shù)據(jù)分布特征的比較。箱形圖能顯示出一組數(shù)據(jù)的最大值(Maximum)、最小值(Minimum)、中位數(shù)(Median)及上下四分位數(shù)(1st/3rd Quartile),同時(shí)還可以顯示逸出值(Outlier)。

那么,這些值是如何被計(jì)算出來(lái)的呢?什么樣的數(shù)據(jù)會(huì)被判定為逸出值呢?

第一四分位數(shù)(Q1),又稱較小四分位數(shù),等于該樣本中所有數(shù)值由小到大排列后第25%的數(shù)字。
第二四分位數(shù),又稱中位數(shù),等于該樣本中所有數(shù)值由小到大排列后第50%的數(shù)字。
第三四分位數(shù)(Q3)又稱較大四分位數(shù),等于該樣本中所有數(shù)值由小到大排列后第75%的數(shù)字。
逸出值,是根據(jù)四分位間距(interquartile range)進(jìn)行計(jì)算的:
四分位間距 = Q3-Q1 = ΔQ
在區(qū)間 Q3+1.5ΔQ, Q1-1.5ΔQ 之外的值即被視為逸出值。

箱形圖怎么畫

(1) 需要什么格式的數(shù)據(jù)
我們需要的數(shù)據(jù)只要兩列,一列為x,一列為y。本次我們使用R中提供的iris數(shù)據(jù)。

這個(gè)數(shù)據(jù)共有5列,分別為花萼長(zhǎng)度(Sepal.Length)、花萼寬度(Sepal.Width)、花瓣長(zhǎng)度(Petal.Length)、花瓣寬度(Petal.Width)以及物種(Species)。

比如我們想要探究不同物種的花萼長(zhǎng)度差異。

(2) 如何使用ggplot2做箱形圖

利用ggplot2畫圖的核心命令是geom_boxplot。我們先來(lái)嘗試做一個(gè)最最基礎(chǔ)也是最丑的boxplot圖。

#加載包
library(ggplot2)
#作圖
ggplot(iris,aes(x=Species,y=Sepal.Length))+
  geom_boxplot()

可以看到不同的物種之間Sepal.Length有所不同,那么這種差異顯著嗎?

這個(gè)時(shí)候我們就需要做檢驗(yàn),那么如何可以直接把檢驗(yàn)結(jié)果展示在圖中呢。這個(gè)時(shí)候我們可以使用另一個(gè)R包ggpubr。

#加載包
library(ggplot2)
library(ggpubr)
#作圖
ggplot(iris,aes(x=Species,y=Sepal.Length,color=Species))+
  geom_boxplot()+
  theme_bw()+#改變繪圖主題
  stat_compare_means(aes(label = ..p.signif..),comparisons = list(c('setosa','versicolor'), c('setosa','virginica'),c('versicolor','virginica')))+#添加檢驗(yàn)
  xlab("")#修改橫坐標(biāo)
 


如果將stat_compare_means這部分修改為stat_compare_means(comparisons = list(c('setosa','versicolor'), c('setosa','virginica'),c('versicolor','virginica')))那么默認(rèn)的作圖就不是顯示*號(hào)而是具體的pvalue值。具體的星號(hào)和pvalue的關(guān)系如下:
ns: p > 0.05
*: p <= 0.05
**: p <= 0.01
***: p <= 0.001
****: p <= 0.0001

同時(shí)如果你的檢驗(yàn)是成對(duì)的那么可以加上參數(shù)paired=T,如果你不想用默認(rèn)的wilcox.test你可以將method改為其他的。比如我想要做一個(gè)成對(duì)的t檢驗(yàn):
stat_compare_means(aes(label = ..p.signif..),method="t.test",paired=T)
可以發(fā)現(xiàn)這里我沒有添加comparisons參數(shù),那么結(jié)果就是看三組是否存在兩組間有顯著差異。
具體的大家可以使用命令?stat_compare_means查看幫助手冊(cè)。

然后我們還可以修改顏色等等。

#加載包
library(ggplot2)
library(ggpubr)
library(RColorBrewer)
#作圖
ggplot(iris,aes(x=Species,y=Sepal.Length,color=Species))+
  geom_boxplot()+
  theme_bw()+#改變繪圖主題+
  theme(
    panel.grid = element_blank(),#去掉背景網(wǎng)格
    legend.position = c('none')#去掉圖例
  )+
  scale_color_manual(values=brewer.pal(3,'Set1'))+#修改顏色
  stat_compare_means(aes(label = ..p.signif..),comparisons = list(c('setosa','versicolor'),
                                        c('setosa','virginica'),
                                        c('versicolor','virginica')),method="t.test"
                                        )+#添加檢驗(yàn)
  xlab("")#修改橫坐標(biāo)

這樣,一張簡(jiǎn)潔的Boxplot圖就完成啦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容