ggplot2箱式图两两比较_R绘图 第四篇:绘制箱图(ggplot2)
箱線圖通過(guò)繪制觀測(cè)數(shù)據(jù)的五數(shù)總括,即最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)以及最大值,描述了變量值的分布情況。箱線圖能夠顯示出離群點(diǎn)(outlier),離群點(diǎn)也叫做異常值,通過(guò)箱線圖能夠很容易識(shí)別出數(shù)據(jù)中的異常值。
箱線圖提供了識(shí)別異常值的一個(gè)標(biāo)準(zhǔn):
異常值通常被定義為小于?QL- l.5 IQR?或者 大于?Qu+ 1.5 IQR的值,QL稱為下四分位數(shù),?Qu稱為上四分位數(shù),IQR稱為四分位數(shù)間距,是Qu上四分位數(shù)和QL下四分位數(shù)之差,其間包括了全部觀察值的一半。
箱線圖的各個(gè)組成部分的名稱及其位置如下圖所示:
箱線圖可以直觀地看出數(shù)據(jù)集的以下重要性值:
中心位置:中位數(shù)所在的位置就是數(shù)據(jù)集的中心;
散布程度:箱線圖分為多個(gè)區(qū)間,區(qū)間較短時(shí),表示落在該區(qū)間的點(diǎn)較集中;
對(duì)稱性:如果中位數(shù)位于箱子的中間位置,那么數(shù)據(jù)分布較為對(duì)稱;如果極值離中位數(shù)的距離較大,那么表示數(shù)據(jù)分布傾斜
一,繪制箱線圖
繪制箱線圖比較簡(jiǎn)單,通常情況下,我們使用ggplot和geom_boxplot繪制箱線圖,在下面的小節(jié)中,我們使用ToothGrowth作為示例數(shù)據(jù):
ToothGrowth$dose
head(ToothGrowth)
len supp dose1 4.2 VC 0.5
2 11.5 VC 0.5
3 7.3 VC 0.5
4 5.8 VC 0.5
5 6.4 VC 0.5
6 10.0 VC 0.5
1,繪制基本的箱線圖
使用geom_boxplot繪制基本的箱線圖:
library(ggplot2)
ggplot(ToothGrowth, aes(x=dose, y=len)) +geom_boxplot()
2,設(shè)置離群點(diǎn)(outlier)
geom_boxplot函數(shù)中有outlier開(kāi)頭的多個(gè)參數(shù),用于修改離群點(diǎn)的屬性:
outlier.colour:離群點(diǎn)的顏色
outlier.fill:離群點(diǎn)的填充色
outlier.shape:離群點(diǎn)的形狀
outlier.size:離群點(diǎn)的大小
outlier.alpha:離群點(diǎn)的透明度
示例代碼如下:
ggplot(ToothGrowth, aes(x=dose, y=len)) +geom_boxplot(outlier.colour="red", outlier.shape=8, outlier.size=4)
3,設(shè)置箱線圖的顏色
通過(guò)aes(color=)函數(shù)可以為每個(gè)箱線圖設(shè)置一個(gè)顏色,而箱線圖的劃分是通過(guò)?aes(color=)函數(shù)的color參數(shù)來(lái)劃分的,劃分箱線圖之后,scale_color_*()函數(shù)才會(huì)起作用,該函數(shù)用于為每個(gè)箱線圖設(shè)置前景色和填充色,顏色是自定義的:
scale_fill_manual() #forbox plot, bar plot, violin plot, etc
scale_color_manual() #for lines and points
以下代碼設(shè)置箱線圖的前景色:
ggplot(ToothGrowth, aes(x=dose, y=len,color=dose)) +geom_boxplot()+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
4,設(shè)置Legend 的位置
說(shuō)明(Legend)是對(duì)箱線圖的解釋性描述,默認(rèn)的位置是在畫(huà)布的右側(cè)中間位置,可以通過(guò)theme()函數(shù)修改Legend的位置,lengend.position的有效值是top、right、left、bottom和none,默認(rèn)值是right:
p
p+ theme(legend.position="top")
p+ theme(legend.position="bottom")
p+ theme(legend.position="none") # Remove legend
5,設(shè)置箱線圖的標(biāo)題和坐標(biāo)軸的名稱
通過(guò)labs設(shè)置箱線圖的標(biāo)題和坐標(biāo)的名稱,參數(shù)title用于設(shè)置標(biāo)題,x和y用于設(shè)置x軸和y軸的標(biāo)簽:
ggplot(ToothGrowth, aes(x=dose, y=len,color=dose)) +geom_boxplot()+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+theme(legend.position="right")+labs(title="Plot of length per dose",x="Dose (mg)", y = "Length")
6,繪制箱線圖的散點(diǎn)
通過(guò)geom_point函數(shù),向箱線圖中添加點(diǎn),geom_jitter()函數(shù)是geom_point(position = "jitter")的包裝,binaxis="y"是指沿著y軸進(jìn)行分箱:
# Box plot with dot plot
p+ geom_dotplot(binaxis='y', stackdir='center', dotsize=1)
# Box plot with jittered points
#0.2 : degree of jitter inx direction
p+ geom_jitter(shape=16, position=position_jitter(0.2))
7,旋轉(zhuǎn)箱線圖
函數(shù)coord_flip()用于翻轉(zhuǎn)笛卡爾坐標(biāo)系,使水平變?yōu)榇怪?#xff0c;垂直變?yōu)樗?#xff0c;主要用于把顯示y條件x的geoms和統(tǒng)計(jì)信息轉(zhuǎn)換為x條件y。
p
二,異常值檢測(cè)
繪制散點(diǎn)圖,并標(biāo)記異常值:
ggplot(ToothGrowth, aes(x=dose, y=len,color=dose)) +geom_boxplot(outlier.colour="red", outlier.shape=7,outlier.size=4)+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+theme(legend.position="right")+labs(title="Plot of length per dose",x="Dose (mg)", y = "Length")+geom_dotplot(binaxis='y', stackdir='center', stackratio=1.5, dotsize=1.2)
當(dāng)箱線圖中的異常值過(guò)多時(shí),繪制的圖中,箱子被壓成一條線,無(wú)法觀察到數(shù)據(jù)的分布,這就需要移除異常值,只保留適量的離群點(diǎn),常見(jiàn)的做法是改變ylim的范圍,代碼是:
# compute lower and upper whiskers
ylim1= boxplot.stats(df$y)$stats[c(1, 5)]
# scale y limits based on ylim1
ggplot()+ gemo_box() + coord_cartesian(ylim = ylim1*1.05)
三,箱圖的排序
對(duì)箱圖的排序,實(shí)際上,是對(duì)箱圖的x軸因子進(jìn)行排序,而因子的順序是由因子水平?jīng)Q定的。在對(duì)箱圖進(jìn)行排序時(shí),可以按照數(shù)據(jù)的均值對(duì)x軸因子水平進(jìn)行排序,重置數(shù)據(jù)框x軸的因子水平,就可以實(shí)現(xiàn)箱圖的排序:
x_order %group_by(x_factor)%>%summarize(mean_y=mean(y_value))%>%ungroup()%>%arrange(desc(mean_y))%>%
select(x_factor);
df$x_factor
參考文檔:
總結(jié)
以上是生活随笔為你收集整理的ggplot2箱式图两两比较_R绘图 第四篇:绘制箱图(ggplot2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: js console 输出到文件_Nod
- 下一篇: java去除重复对象_Java19-2