日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

R語言ggplot2箱線圖繪圖總結(jié)

 昵稱63152022 2020-03-17

主要從如何看圖、用圖與作圖三個(gè)方面來對(duì)箱線圖進(jìn)行理解和總結(jié)。

1、看圖

箱線圖概述圖1

箱線圖概述圖2

如圖所示,箱線圖是將一組數(shù)據(jù)按照大小順序排列后進(jìn)行繪制的,包含6個(gè)數(shù)據(jù)節(jié)點(diǎn),分別表示出數(shù)據(jù)的上邊緣、上四分位數(shù)點(diǎn)Q3(數(shù)據(jù)從小到大排列后處在75%位置上的數(shù)據(jù))、中位數(shù)、下四分位數(shù)Q1(數(shù)據(jù)從小到大排列后處在25%位置上的數(shù)據(jù))、下邊緣和異常值。由此,箱線圖很形象地分為中心、延伸以及分布狀態(tài)的全部范圍。

異常值的篩選是根據(jù)數(shù)值與外限和內(nèi)限的位置差異來進(jìn)行的。內(nèi)限即異常值截?cái)帱c(diǎn)為Q3+1.5IQR和Q1-1.5IQR,外限為Q3+3IQR和Q1-3IQR。其中IQR=Q3-Q1,為四分位距。處在內(nèi)限以外位置的點(diǎn)表示的數(shù)據(jù)都是異常值,其中在內(nèi)限與外限之間的異常值為溫和異常值,在外限以外的為極端異常值。軟件繪圖中一般不會(huì)標(biāo)出內(nèi)限和外限。

2、用圖

2、1 可以用于反映數(shù)據(jù)的形狀

除須以外,箱子包含了50%的數(shù)據(jù),因此,箱子的寬度在一定程度上反映了數(shù)據(jù)的波動(dòng)程度,箱子越扁說明數(shù)據(jù)越集中,須越短也說明數(shù)據(jù)越集中。

2、2 可以用于反映數(shù)據(jù)的偏態(tài)

中位數(shù)如果偏離上下四分位數(shù)的中心位置,分布的偏態(tài)性就越強(qiáng)。當(dāng)中位數(shù)靠近上四分位點(diǎn)時(shí),說明下四分位點(diǎn)與中位數(shù)之間的數(shù)據(jù)變化幅度大,中位數(shù)與上四分位點(diǎn)之間的數(shù)據(jù)變化幅度??;當(dāng)中位數(shù)靠近下四分位點(diǎn)時(shí),則反之。

2、3 可以用于表示數(shù)據(jù)的變化趨勢(shì)或者進(jìn)行數(shù)據(jù)之間比較

將多個(gè)箱線并行排列,可以看出數(shù)據(jù)整體的變化趨勢(shì)。如下圖中可以很明顯的看出60天向100天過渡的過程中,長度的總體態(tài)勢(shì)是逐漸增長的,但是113天卻往下掉了。


boxplot of length.jpeg

同時(shí)也將幾批數(shù)據(jù)的箱線圖并行排列后,這幾批數(shù)據(jù)的中位數(shù)、尾長、異常值和分布區(qū)間等信息一目了然,可以進(jìn)行粗略的比較,如下圖所示。


并行排列幾批數(shù)據(jù)后繪制成的箱線圖

2、4 可以用于體現(xiàn)與篩選數(shù)據(jù)的異常值

異常值的存在會(huì)對(duì)數(shù)據(jù)的計(jì)算分析過程產(chǎn)生影響,因此如果能體現(xiàn)與篩選異常值,分析其產(chǎn)生的原因,就可以發(fā)現(xiàn)問題并進(jìn)而進(jìn)行改進(jìn)。識(shí)別異常值的經(jīng)典方法中3σ法則和z分?jǐn)?shù)法都是以數(shù)據(jù)服從正態(tài)分布為前提進(jìn)行篩選的,而箱線圖的繪制是依靠實(shí)際數(shù)據(jù),不需事先假定數(shù)據(jù)服從的分布形式,同時(shí)因?yàn)樗姆治粩?shù)具有一定的耐抗性,所以利用箱線圖識(shí)別異常值的結(jié)果會(huì)比較客觀。

以上部分參考自https://www.jianshu.com/p/5b3bec6d38ed

3、作圖

箱線圖的數(shù)據(jù)格式通常為兩列,一列為類型變量,表示所屬類別;一類為連續(xù)型數(shù)字變量,表示數(shù)值。通過這樣的兩列繪制出來的箱線圖稱為并列箱線圖。而在某些情況中,需要繪制分組的箱線圖進(jìn)行比較,這樣子就需要三個(gè)變量,即三列,包括兩列類型變量和一列連續(xù)型的數(shù)字變量。


并列型箱線圖


并列型箱線圖的數(shù)據(jù)


分組型箱線圖


分組型箱線圖的數(shù)據(jù)

3、1 并列型箱線圖作圖

命令格式為

ggplot(表名,aes(x=表中列,y=表中列))+geom_boxplot(aes(fill=表中用于分類的列))

用fill分類完以后會(huì)自動(dòng)填充顏色,當(dāng)然fill=也可加具體顏色名或顏色代碼用于統(tǒng)一填充顏色,若不加fill項(xiàng),則會(huì)默認(rèn)黑白色。

另一種格式是

ggplot(表名,aes(x=表中列,y=表中列,fill=用于分類的列))+geom_boxplt()

兩種格式的效果是一樣的。

3、2 分組型箱線圖作圖

因?yàn)椴⒘邢渚€圖中只有兩列,所以其中一列必須同時(shí)是x軸(或y軸)和fill列,但是分組箱線圖中有三列,所以其中一列為x軸,一列為y軸,一列為fill列,命令格式與并列箱線圖相同。
當(dāng)繪制過程中會(huì)出現(xiàn)類似下圖的情況時(shí)


分面前


因?yàn)楦鹘M之間尺度相差過大而被拉扯,這種情況下需要用到facet函數(shù)進(jìn)行分面。

facet_wrap(~分面所根據(jù)的變量,scales=“free”)

分面后

其中scales=“free”是使得分面后的各面有適應(yīng)其圖形的坐標(biāo)。如果不加scales=“free”,則只是分面而不改變坐標(biāo)軸。如下圖所示:


無scales=“free”分面后

這種尺度過于拉大導(dǎo)致無法看圖的情況其實(shí)在并列型箱線圖中也存在,但是這種分面的方法更適用于分組型的箱線圖。

當(dāng)然也可以把同一組的分到一起

ggplot(xiang,aes(x=Organ_type,
                 y=Count,
                fill=Expression_level))+
  geom_boxplot()+
  facet_wrap(~Expression_level,scale="free")

同組同一顏色

3、3 自定義坐標(biāo)軸排序

在箱線圖繪制過程中,系統(tǒng)會(huì)對(duì)各列進(jìn)行自動(dòng)排序,有時(shí)候往往不是我們想要的順序。如下圖中,理想順序是60、70、80、90、100、113、CK,但實(shí)際上順序并不一樣。


系統(tǒng)讀取后的坐標(biāo)軸排序


這種情況下需要使用命scale_x_discrete命令來進(jìn)行調(diào)整。

scale_x_discrete(limits=c(60”,“70”,“80”,“90”,“100”,“113”,“CK))

同時(shí)也可以用這個(gè)命令摘出部分想要的子集。

scale_x_discrete(limits=c(60”,“70”,“80”,“90))

3、4 修改顏色

箱線圖的繪制中需要調(diào)整各個(gè)箱線的顏色。
3.1中所繪制的箱線圖是用填充色將分類所表現(xiàn)出來,而將3.1命令中的fill改成colour,即colour=表中用于分類的列,即可實(shí)現(xiàn)用邊框色將分類表現(xiàn)出來。完整的命令為:

ggplot2(表名,aes(x=表中列,y=表中列))+geom_boxplot(aes(colour=表中用于分類的列),width=0.5)#width用于調(diào)整整個(gè)箱線的寬度

當(dāng)然,fill和color也可以同時(shí)使用

ggplot(chang,aes(x=days,y=length,fill="orange",color="red"))+
  geom_boxplot(alpha=0.4)

color與fill同時(shí)調(diào)色后

用填充色將不同箱線圖表現(xiàn)出來以后,若要調(diào)整填充色,可以使用RColorBrewer調(diào)色盤進(jìn)行調(diào)色,需加上scale_fill_brewer()
如果不在括號(hào)中加入具體的某一調(diào)色盤的名稱,默認(rèn)為冷色調(diào),如果想改成其他的顏色組合,應(yīng)是

scale_fill_brewer(palette=“Set1”)

括號(hào)中的Set1是具體的該調(diào)色盤中的名稱。調(diào)色盤還有以下幾種:


調(diào)色盤


調(diào)色盤的顏色種類為8-12種,但是箱線圖繪制過程中出現(xiàn)的箱線一般不會(huì)超過12個(gè),所以對(duì)繪制并無太大影響。
同樣地,若將命令中的fill改成colour也同樣適用,只是調(diào)色盤的顏色會(huì)顯示在邊框上。
另外,如果想降低打印成本,可以使用灰度調(diào)色板,命令為

scale_fill_grey()

括號(hào)中可以填start或end,若start=1,則箱線顏色從左往右逐漸加深;若end=1,則箱線顏色從左往右逐漸變淺。start和end的取值范圍皆為0-1。


使用灰度調(diào)色盤后

3、5 添加槽口

在geom_boxplot()括號(hào)中加入notch=TRUE即可在箱子上生成槽口,即

geom_boxplot(notch=TRUE,notchwidth=0.8)#notchwidth越小則越往里凹

添加槽口后

3、6 添加均值標(biāo)記

箱線中的均值標(biāo)記常以鉆石來表示,所以命令為

stat_summary(fun.y=“mean”,geom=“point”,shape=23,size=3,fill=“white”)

添加均值標(biāo)記后

3、7 添加最大值與最小值線

用基礎(chǔ)R包繪圖繪制的箱線圖中具有最大最小值線(即概述圖中的上邊緣和下邊緣),但是用ggplot2繪制的箱線圖中,是沒有最大最小值線的。


用基礎(chǔ)R包繪制的箱線圖


想要使ggplot2所繪制的箱線圖帶有最大最小值線,可用stat_boxplot命令,完整如下:

stat_boxplot(geom=“errorbar”,width=0.15,aes(color=用于分類的列))

其中aes是為最大最小值先添加顏色的,可以去掉,去掉即為黑色。

要注意的是,因?yàn)間gplot2的規(guī)則是圖層疊加,所以如果是先作箱線圖,即先輸入geom_boxplot(),再輸入stat_boxplot(),會(huì)導(dǎo)致箱線圖中出現(xiàn)十字。


箱線上出現(xiàn)十字


所以輸入命令時(shí),必須先輸入stat_boxplot(),再輸入geom_boxplot()。
舉例為

ggplot(changdu,aes(factor,long))+stat_boxplot(geom = "errorbar",width=0.15)+geom_boxplot(aes(fill=factor))

3、8 離群點(diǎn)(異常值)

關(guān)于離群點(diǎn)的參數(shù)有outlier開頭的多個(gè),如:
outlier.colour:離群點(diǎn)的顏色參數(shù)
outlier.fill:離群點(diǎn)的填充色參數(shù)
outlier.shape:離群點(diǎn)的形狀參數(shù)
outlier.size:離群點(diǎn)的大小參數(shù)
outlier.alpha:離群點(diǎn)的透明度參數(shù)
使用時(shí)放在geom_boxplot中,如:

geom_boxplot(outlier.colour="red", outlier.shape=7,outlier.size=4)

3、9 將箱線圖轉(zhuǎn)置

添加

coord_flip()

即可。效果圖如下:


轉(zhuǎn)置后的箱線圖

3、10 可變寬度

箱線圖只能反映數(shù)據(jù)的整體態(tài)勢(shì),而不能反映數(shù)據(jù)的密度,但是如果數(shù)據(jù)密度越大,箱子的寬度也隨之增大,則可在一定程度上了解數(shù)據(jù)的密度。
使用命令

geom_boxplot(varwidth = TRUE)

使寬度可隨著數(shù)據(jù)密度成正相關(guān)變化

3、11 將散點(diǎn)在箱線中體現(xiàn)(1)

在箱線圖中列出散點(diǎn)可以更直觀地看出數(shù)據(jù)在箱線中的分布。有四種方法。
第一種方法是使用geom_point()將數(shù)據(jù)的散點(diǎn)圖重疊在箱線圖之上,但缺點(diǎn)是畫出的散點(diǎn)只能排列在同一x坐標(biāo)上,會(huì)導(dǎo)致重疊,觀察不出數(shù)據(jù)的分布密度。

第二種方法是使用geom_dotplot。相比于第一種方法,geom_dotplot畫出來的圖較為分散美觀且可以加入抖動(dòng)參數(shù)。


geom_dotplot作圖


命令如下例:

ggplot(chang,aes(x=days,y=length,color=days))+
  geom_boxplot()+
  geom_dotplot(binaxis = "y",
               stackdir = "center",
               position="jitter",
               dotsize = 0.4,)

dotplot的具體參數(shù)信息可以參考下面這個(gè)網(wǎng)址:
https://www.cnblogs.com/ljhdo/p/4886067.html

第三種方法,是使用ggpurb包進(jìn)行作圖。
命令如下:

ggboxplot(chang,
          x="days",
          y="length",
          color="days",
          palette = "jama",
          add = "jitter")

使用ggpurb作圖


與dotplot對(duì)比可以看出,dotplot的散點(diǎn)只能隨著箱線作圖映射時(shí)fill或color進(jìn)行顏色改變,fill則為填充色,color則為輪廓色,兩者只能選擇其一,不能同時(shí)變色,這也導(dǎo)致了dotplot作出的圖中的散點(diǎn)與異常值點(diǎn)外觀上有區(qū)別。
同時(shí)因?yàn)間gpurb是ggplot2的擴(kuò)展包,所以它能實(shí)現(xiàn)以上許多功能,除了添加均值標(biāo)記和自定義坐標(biāo)軸順序。

還有一種方法是使用geom_jitter體現(xiàn)出抖動(dòng)的點(diǎn),例如:

ggplot(chang,aes(x=days,y=length,fill=days))+
  geom_boxplot()+
scale_fill_viridis(discrete=T,alpha=0.6)+
  geom_jitter(color="black",size=0.89,alpha=0.9)+
  theme_ipsum_rc()

使用geom_jitter后


此方法完美兼容本文中其他命令且不用擔(dān)心散點(diǎn)與異常值點(diǎn)的不協(xié)調(diào)不美觀,因此推薦使用第四種方法。

3、11 將散點(diǎn)在箱線中體現(xiàn)(2)

可以使用ggExtra包中的ggMarginal()功能將箱線放在散點(diǎn)圖的周圍

p<-ggplot(mtcars,aes(x=wt,y=mpg))+geom_point()
p1<-ggMarginal(p,type = "boxplot",fill="slateblue",size=6)

ggMarginal中的fill與size都是設(shè)置散點(diǎn)圖周圍箱線的參數(shù)的。
效果圖如下:


ggMarginal作圖后


該方法不僅限于散點(diǎn)圖和箱線圖,也可用與直方圖、箱線圖、密度圖與其他圖的結(jié)合。

3、12 其他

關(guān)于其他一些基本的參數(shù),如坐標(biāo)軸名稱,標(biāo)題名稱位置等,可用ggThemeAssist進(jìn)行傻瓜式調(diào)整。具體見https://mp.weixin.qq.com/s/NWXvuTNAgjW3_EzT5J01Zw

4、總結(jié)的總結(jié)

下面是并列型箱線圖包含上述內(nèi)容的總命令,在實(shí)踐中為求方便的話可以復(fù)制粘貼后再根據(jù)自己的需要進(jìn)行刪除和修改。

ggplt2(表名,aes(x=表中列,y=表中列))+
 stat_boxplot(geom = "errorbar",width=0.15)+
 geom_boxplot(aes(fill=表中用于分類的列),
               notch=TRUE,outlier.colour="red", outlier.shape=7,outlier.size=4)+
 scale_x_discrete(limits=c(“A”,“B”,“C”,“D”,“E”,“F”,“G”))+
 scale_fill_brewer(palette=“Set1”)+
 stat_summary(fun.y=“mean”,geom=“point”,shape=23,size=3,fill=“white”)+
 theme_bw()+theme(panel.border = element_blank(),panel.grid.major = element_blank(),
                   panel.grid.minor = element_blank(),
                   axis.line = element_line(colour = "black"))#使背景為空白并保留坐標(biāo)軸為黑色

下面是分組型箱線圖包含上述內(nèi)容的總命令,在實(shí)踐中為求方便的話可以復(fù)制粘貼后再根據(jù)自己的需要進(jìn)行刪除和修改。

ggplt2(表名,aes(x=表中列,y=表中列))
 stat_boxplot(geom = "errorbar",width=0.15)+
 geom_boxplot(aes(fill=表中用于分類的列),notch=TRUE,
                   outlier.colour="red", outlier.shape=7,outlier.size=4)+
 facet_wrap(~分面所根據(jù)的變量,scales=“free”)+
 scale_fill_brewer(palette=“Set1”)+
 stat_summary(fun.y=“mean”,geom=“point”,shape=23,size=3,fill=“white”)+
 theme_bw()+theme(panel.border = element_blank(),panel.grid.major = element_blank(),
                   panel.grid.minor = element_blank(),axis.line = element_line(colour = "black"))

如果想要嘗試,可以從https://pan.baidu.com/s/1PQWiOGjSzdyVMTsa1sGwWA
中下載文件。

箱線圖能夠形象地體現(xiàn)數(shù)據(jù)的分布態(tài)勢(shì),但是在這同時(shí),也會(huì)掩蓋數(shù)據(jù)的密度分布,這也是箱線圖的缺點(diǎn)所在。因此才有了小提琴圖等。

這是對(duì)箱線圖繪制過程的初步總結(jié),包括了繪制簡單箱線圖的內(nèi)容。添加顯著性差異標(biāo)識(shí)、均值點(diǎn)連線、和其他圖聯(lián)動(dòng)等方面的內(nèi)容以后會(huì)繼續(xù)進(jìn)行補(bǔ)充。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多