乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       昵稱63152022 2020-03-17

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

      1、看圖

      箱線圖概述圖1

      箱線圖概述圖2

      如圖所示,箱線圖是將一組數(shù)據(jù)按照大小順序排列后進(jìn)行繪制的,包含6個數(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)限即異常值截斷點(diǎn)為Q3+1.5IQR和Q1-1.5IQR,外限為Q3+3IQR和Q1-3IQR。其中IQR=Q3-Q1,為四分位距。處在內(nèi)限以外位置的點(diǎn)表示的數(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)性就越強(qiáng)。當(dāng)中位數(shù)靠近上四分位點(diǎn)時,說明下四分位點(diǎn)與中位數(shù)之間的數(shù)據(jù)變化幅度大,中位數(shù)與上四分位點(diǎn)之間的數(shù)據(jù)變化幅度小;當(dāng)中位數(shù)靠近下四分位點(diǎn)時,則反之。

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

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


      boxplot of length.jpeg

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


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

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

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

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

      3、作圖

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

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


      分面前


      因?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)會對各列進(jìn)行自動排序,有時候往往不是我們想要的順序。如下圖中,理想順序是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))

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

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

      3、4 修改顏色

      箱線圖的繪制中需要調(diào)整各個箱線的顏色。
      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)整整個箱線的寬度

      當(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)色盤進(jìn)行調(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是為最大最小值先添加顏色的,可以去掉,去掉即為黑色。

      要注意的是,因?yàn)間gplot2的規(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 離群點(diǎn)(異常值)

      關(guān)于離群點(diǎn)的參數(shù)有outlier開頭的多個,如:
      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ù)
      使用時放在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 將散點(diǎn)在箱線中體現(xiàn)(1)

      在箱線圖中列出散點(diǎn)可以更直觀地看出數(shù)據(jù)在箱線中的分布。有四種方法。
      第一種方法是使用geom_point()將數(shù)據(jù)的散點(diǎn)圖重疊在箱線圖之上,但缺點(diǎn)是畫出的散點(diǎn)只能排列在同一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包進(jìn)行作圖。
      命令如下:

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

      使用ggpurb作圖


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

      還有一種方法是使用geom_jitter體現(xiàn)出抖動的點(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ù)據(jù)的密度分布,這也是箱線圖的缺點(diǎn)所在。因此才有了小提琴圖等。

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多