日更已經(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圖就完成啦。