本文作者蔣劉一琦,,自嘲是一個(gè)有藝術(shù)追求的生信狗,畢業(yè)于浙江大學(xué)生物信息學(xué)專業(yè),,目前在復(fù)旦大學(xué)就讀研究生,,研究方向?yàn)楹昊蚪M。 在生物信息領(lǐng)域我們常常使用R語(yǔ)言對(duì)數(shù)據(jù)可視化,。在對(duì)數(shù)據(jù)可視化的時(shí)候,,我們需要明確想要展示的信息,從而選擇最為合適的圖突出該信息,。本系列文章將介紹多種基于不同R包的作圖方法,,希望能夠幫助到各位讀者,。 什么是熱圖(Heatmap)熱圖是一個(gè)以顏色變化來顯示數(shù)據(jù)的矩陣。Toussaint Loua在1873年就曾使用過熱圖來繪制對(duì)巴黎各區(qū)的社會(huì)學(xué)統(tǒng)計(jì),。 生物學(xué)中熱圖經(jīng)常用于展示多個(gè)基因在不同樣本中的表達(dá)水平,。然后可以通過聚類等方式查看不同組(如疾病組和對(duì)照組)特有的pattern。如上圖每一列代表一個(gè)樣本(左側(cè)的樣本是Basal,,右側(cè)的樣本是Luminal),,每一行代表一個(gè)基因,顏色代表了表達(dá)量(這張圖沒有顯示圖例,,不知道是偏綠還是偏紅代表高表達(dá)量),。可以看到這些挑選出的基因在兩組的表達(dá)有較大的差異,,EN1,、FOXC1這幾個(gè)基因在Basal組總體呈現(xiàn)紅色,在Luminal呈現(xiàn)綠色,。而后面的幾個(gè)基因在Luminal總體呈現(xiàn)紅色,,在Basal總體呈現(xiàn)綠色。 外面的樹狀圖形是對(duì)基因和樣本的聚類,,通常聚類的結(jié)果把基因的表達(dá)量相似的聚在一起,,把基因表達(dá)的pattern相似的樣本聚在一起。所以在該圖中可以看到Basal的樣本都聚在了一起,,Luminal 的樣本也都聚在了一起,。通常如果兩組的差異較明顯,組內(nèi)的pattern較為相似,,就能有這樣的聚類結(jié)果——一個(gè)組的樣本聚類在一起,。相反如果是差異較小的兩組樣本,就很可能混在一起,。 熱圖還可以用于展示其他物質(zhì)的豐度比如微生物的相對(duì)豐度,、代謝組不同物質(zhì)的含量等等。當(dāng)然,,另一個(gè)熱圖的重要用處就是展現(xiàn)不同指標(biāo),、不同樣本等之間的相關(guān)性。此時(shí)顏色代表的就是相關(guān)系數(shù)的大小,。所以可以看到自己和自己的相關(guān)系數(shù)是1,,也就是最深的藍(lán)色。約接近白色說明相關(guān)性越弱,,偏藍(lán)(正相關(guān))或者偏紅(負(fù)相關(guān))則代表相關(guān)性強(qiáng),。 當(dāng)然在相關(guān)性的計(jì)算中除了相關(guān)系數(shù)以外,我們還會(huì)看pvalue是否顯著,。如果我們想要把pvalue表示在圖中,,可以在格子上添加*號(hào)或者具體的數(shù)值,。同時(shí)因?yàn)檫@里可以看到其實(shí)不同的兩個(gè)指標(biāo)之間的關(guān)系是被重復(fù)展現(xiàn)了2次,比如symboling與normalized-losses(最上面一行的第二個(gè)格子,,和從上往下的第二行的第一個(gè)格子),,因此有時(shí)候我們只展現(xiàn)一半即對(duì)角線以上或以下的一半圖形。 怎么做熱圖Heatmap1)需要什么格式的數(shù)據(jù)有很多的軟件都可以做heatmap,。我們要介紹的當(dāng)然是R,,R默認(rèn)中提供了heatmap函數(shù)。當(dāng)然,,R中也有很多具有heatmap功能的包,,比如ggplot2,gplots。今天我們介紹含有heatmap.2功能的gplots包,。heatmap.2函數(shù)和我們之前要求的數(shù)據(jù)類型不太一樣,,這個(gè)函數(shù)輸入數(shù)據(jù)要求是個(gè)矩陣(matrix)。 data(mtcars) x<-mtcars y<-as.matrix(mtcars)
在R Studio中我們可以清楚的看到x和y的區(qū)別(雖然如果點(diǎn)開你也許會(huì)覺得x與y難道不是一模一樣嗎),,x的type是dataframe的格式,,而y是matrix也就是矩陣格式。這兩種數(shù)據(jù)類型有什么差別呢,?matrix中的值只能是一個(gè)格式,,比如都是字符型。而dataframe可以同時(shí)支持不同的類型比如數(shù)值型和字符型,。 2)如何做圖本節(jié)用一個(gè)不是那么生物的數(shù)據(jù)集來展示一下如何做熱圖,。
如果直接使用默認(rèn)的heatmap.2功能我們可以看到: 和平時(shí)看到的heatmap有些不一樣,中間的這些藍(lán)色的線我們稱作“trace”:虛線表示這一列平均值,,實(shí)線表示與平均值的偏離程度,。默認(rèn)是按照列計(jì)算平均等,也可以改為行,。但是我們這里的數(shù)據(jù)是做相關(guān)性,,所以這些線的意義就不是那么大。圖例中也類似,,展示了不同顏色對(duì)應(yīng)的值大小,,而藍(lán)色的實(shí)線是根據(jù)數(shù)據(jù)分布做的密度曲線,虛線是平均值,。黑色的線之前我們已經(jīng)提到過是對(duì)數(shù)據(jù)進(jìn)行了聚類,。 然后我們對(duì)圖進(jìn)行一些修改,紅色太扎眼換個(gè)顏色,,把一些不需要的功能去掉。比如聚類比如這些藍(lán)色的線,。 data('attitude') Ca <- cor(attitude)#cor的結(jié)果就是矩陣
library(gplots) library(RColorBrewer) coul <- colorRampPalette(brewer.pal(8, 'PiYG'))(25)#換個(gè)好看的顏色 hM <- format(round(Ca, 2))#對(duì)數(shù)據(jù)保留2位小數(shù)
heatmap.2(Ca, trace='none',#不顯示trace col=coul,#修改熱圖顏色 density.info = 'none',#圖例取消density key.xlab ='Correlation', key.title = '', cexRow = 1,cexCol = 1,#修改橫縱坐標(biāo)字體 Rowv = F,Colv = F, #去除聚類 margins = c(6, 6), cellnote = hM,notecol='black'#添加相關(guān)系數(shù)的值及修改字體顏色 )
當(dāng)然也可以按照相同順序把相關(guān)性系數(shù)換成pvalue,。顏色也可以根據(jù)情況進(jìn)行修改,。其他的也可以進(jìn)一步調(diào)整。 友情提示: |
|