“ 箱線圖是利用數(shù)據(jù)的五個(gè)統(tǒng)計(jì)量则酝,最小值源譬,第一四分位數(shù)勺拣,中位數(shù)跨蟹,第三四分位數(shù),最大值來(lái)描述數(shù)據(jù)的一種方法擒贸,一般來(lái)說(shuō)都是用于幾個(gè)數(shù)據(jù)組之間的比較臀晃。”
上一篇文章中,我們講解了關(guān)于使用qplot繪制折線圖和散點(diǎn)折線圖的操作
漂亮的折線圖
onlybugs介劫,公眾號(hào):輕松玩轉(zhuǎn)生信可視化系列4 | 快速繪圖qplot3-折線圖
今天徽惋,我們就要繪制一種更加常用,而且也究極實(shí)用的圖表了座韵,他就是箱線圖险绘。相信大家對(duì)這箱線圖早有耳聞,但是繪制的可能都不是很理想誉碴。而今天繪制的仍舊不是我們能做到的終極效果隆圆,頂多說(shuō)是普通效果罷了,后面使用ggplot配合scale系列函數(shù)翔烁,以及各種其它的geom函數(shù),我們能獲得更復(fù)雜的箱線圖或者箱線提琴散點(diǎn)圖等等旨涝。
繪制基本箱線圖
在畫圖之前我們先加載畫圖的包蹬屹,然后復(fù)制一份數(shù)據(jù)到當(dāng)前環(huán)境中,
library(ggplot2)
df <- ToothGrowth
ToothGrowth是一組關(guān)于牙齒生長(zhǎng)的數(shù)據(jù)集白华,你可以用它來(lái)類比聯(lián)想你正在使用的數(shù)據(jù)集慨默,其實(shí)大同小異的。TG這組數(shù)據(jù)集中一共具有60個(gè)觀測(cè)弧腥,每個(gè)觀測(cè)都是對(duì)豚鼠牙齒的生長(zhǎng)進(jìn)行的測(cè)量厦取。每一個(gè)觀測(cè)通過(guò)喂食OJ和VC兩種維生素,每種維生素具有三種不同的劑量管搪,由此來(lái)進(jìn)行分析是否對(duì)其牙齒的生長(zhǎng)產(chǎn)生了影響虾攻。
畫圖之前铡买,我們?cè)倏纯次覀兊母髁卸际鞘裁礃幼拥陌?/p>
> str(df)
'data.frame': 60 obs. of 3 variables:
$ len : num 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
$ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
$ dose: num 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...
這里我們的len就是牙齒的長(zhǎng)度,supp就是服用的藥物類型霎箍,然后dose是服用的劑量奇钞。其中,len和dose是數(shù)值類型漂坏,而supp是因子類型景埃,為了方便,我們后續(xù)可能會(huì)對(duì)dose類型轉(zhuǎn)化顶别,變成因子類型谷徙。
下面開始最簡(jiǎn)單的箱線圖吧,我們畫個(gè)不太合理的東西驯绎,看看不同的藥物作用之間是不是有顯著的差異
qplot(data = df,
x = supp,y = len,
geom = 'boxplot')
這個(gè)圖其實(shí)是不太合適的完慧,這里就是給大家展示一下,因?yàn)椴煌瑒┝啃?yīng)的都混在一起条篷,但是還是能整體看出OJ的效果更優(yōu)一些骗随。這里就是最簡(jiǎn)單的箱線圖了,我們只需要指定geom='boxplot'即可赴叹。
分組箱線圖
接下來(lái)我們要來(lái)繪制分組箱線圖鸿染,這能更好的展示我們的數(shù)據(jù),而且也更符合我們目前的需求乞巧。
這里的qplot有些問題涨椒,作者也沒找到具體原因,按理說(shuō)如下代碼的結(jié)果應(yīng)該是相同的绽媒,結(jié)果qplot卻犯了撒蚕冬,個(gè)人推測(cè)是由于qplot的內(nèi)置機(jī)制有關(guān),有些參數(shù)傳遞不過(guò)去是辕,導(dǎo)致無(wú)法分組
qplot(data = df,
x = factor(dose),y = len,
group = supp,fill = supp,
geom = 'boxplot')
ggplot(df,aes(x = factor(dose),y=len,fill=supp)) +
geom_boxplot()
那這里就使用ggplot來(lái)進(jìn)行講解吧囤热,反正也大差不差了,這里的data是指定數(shù)據(jù)获三,然后x和y是指定我們畫圖的x和y軸都是什么旁蔼。這里要注意,我們的x一定要轉(zhuǎn)化為factor類型疙教,不然會(huì)出問題棺聊。然后使用不同的藥物進(jìn)行填充顏色,就得到了下面的圖片
這就是我們非常常見的分組箱子圖了贞谓,大家應(yīng)該經(jīng)常會(huì)見到類似的限佩。我們這里明顯能看出OJ的效果更好,而劑量到達(dá)2的時(shí)候則接近相似。
一些基本可調(diào)參數(shù)
最后講講箱線圖可以調(diào)節(jié)的參數(shù)吧祟同。這里也是講解最基本參數(shù)作喘,不做配色映射修改以及分面操作。
對(duì)于一個(gè)箱子圖來(lái)說(shuō)耐亏,我們能看到fill徊都,也就是填充顏色參數(shù),然后箱子具有邊緣广辰,那也就是說(shuō)它也具有和線有關(guān)的參數(shù)暇矫,比如線顏色以及粗細(xì)等等。
ggplot(df,aes(x = factor(dose),y=len,fill=supp)) +
geom_boxplot(size = 1,
color = 'red')
這里我們就是修改了箱子的線條粗細(xì)以及箱子的線條顏色择吊。由于我把配色選的太丑了李根,所以看著更難看死了。几睛。房轿。。大家知道參數(shù)咋回事就好所森。
下面一組參數(shù)是關(guān)于箱子的寬度囱持,我們都知道箱線圖的長(zhǎng)是有自己的數(shù)學(xué)含義的,即極值和四分位數(shù)焕济,但是寬度可沒有定義纷妆,所以我們這里可以使用width參數(shù)對(duì)寬度進(jìn)行修改。
ggplot(df,aes(x = factor(dose),y=len,fill=supp)) +
geom_boxplot(width = 0.5)
G缙掩幢!寬度參數(shù)需要在0-1之間,不要忘記了上鞠,大于1將會(huì)導(dǎo)致你無(wú)法處理的情況<柿凇!
關(guān)于箱線圖的第一節(jié)就學(xué)這么多吧芍阎,后面完全講解的時(shí)候會(huì)把這一期內(nèi)容貼上去世曾,然后講解箱子提琴圖以及notch參數(shù),顏色映射修改谴咸,分面以及修改兩個(gè)箱子之間的距離等等比較麻煩的東西度硝。
下一篇文章的內(nèi)容是關(guān)于使用qplot繪制提琴圖,使用數(shù)據(jù)集應(yīng)該是不會(huì)發(fā)生變化寿冕,和今天的數(shù)據(jù)集一樣。
如果你喜歡我的文章椒袍,請(qǐng)收藏我的文章并且給我個(gè)贊驼唱,你的支持就是我更新的最大的動(dòng)力,關(guān)注我會(huì)有更多驚喜哦驹暑,專注于生物信息學(xué)以及數(shù)據(jù)分析入門和進(jìn)階教程玫恳,也許我給不了你從10-100辨赐,但是我可以給你最好的從0-10!
最后京办,關(guān)注我的公眾號(hào)掀序,領(lǐng)取更多學(xué)習(xí)資料吧!2研觥不恭!
打開v搜索,”輕松玩轉(zhuǎn)生信“或者從下面文章進(jìn)去獲取二維碼關(guān)注哦