小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 昵稱63152022 2020-03-17

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

1、看圖

箱線圖概述圖1

箱線圖概述圖2

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

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

2、用圖

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

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

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

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

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

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


boxplot of length.jpeg

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


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

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

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

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

3、作圖

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


并列型箱線圖


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


分組型箱線圖


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

3、1 并列型箱線圖作圖

命令格式為

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

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

另一種格式是

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

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

3、2 分組型箱線圖作圖

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


分面前


因為各組之間尺度相差過大而被拉扯,這種情況下需要用到facet函數(shù)進行分面。

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

分面后

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


無scales=“free”分面后

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

當(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)會對各列進行自動排序,有時候往往不是我們想要的順序。如下圖中,理想順序是60、70、80、90、100、113、CK,但實際上順序并不一樣。


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


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

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

同時也可以用這個命令摘出部分想要的子集。

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

3、4 修改顏色

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

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

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

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

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

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

scale_fill_brewer(palette=“Set1”)

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


調(diào)色盤


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

scale_fill_grey()

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


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

3、5 添加槽口

在geom_boxplot()括號中加入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是為最大最小值先添加顏色的,可以去掉,去掉即為黑色。

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


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


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

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

3、8 離群點(異常值)

關(guān)于離群點的參數(shù)有outlier開頭的多個,如:
outlier.colour:離群點的顏色參數(shù)
outlier.fill:離群點的填充色參數(shù)
outlier.shape:離群點的形狀參數(shù)
outlier.size:離群點的大小參數(shù)
outlier.alpha:離群點的透明度參數(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ù)據(jù)的密度,但是如果數(shù)據(jù)密度越大,箱子的寬度也隨之增大,則可在一定程度上了解數(shù)據(jù)的密度。
使用命令

geom_boxplot(varwidth = TRUE)

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

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

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

第二種方法是使用geom_dotplot。相比于第一種方法,geom_dotplot畫出來的圖較為分散美觀且可以加入抖動參數(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ù)信息可以參考下面這個網(wǎng)址:
https://www.cnblogs.com/ljhdo/p/4886067.html

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

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

使用ggpurb作圖


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

還有一種方法是使用geom_jitter體現(xià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)心散點與異常值點的不協(xié)調(diào)不美觀,因此推薦使用第四種方法。

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

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

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

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


ggMarginal作圖后


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

3、12 其他

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

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

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

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)容的總命令,在實踐中為求方便的話可以復(fù)制粘貼后再根據(jù)自己的需要進行刪除和修改。

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ù)據(jù)的密度分布,這也是箱線圖的缺點所在。因此才有了小提琴圖等。

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多