熱圖4:ComplexHeatmap畫復(fù)雜熱圖行列注釋

想要獲取更多精彩內(nèi)容屯远,請(qǐng)前往我的公眾號(hào)
image.png

之前我們交替介紹了pheatmap和ComplexHeatmap的熱圖畫法故慈,ComplexHeatmap其實(shí)是pheatmap的升級(jí)版朽们,包含其大多數(shù)功能蚌卤。小編覺得掌握這兩個(gè)包就可以解決大多數(shù)熱圖問題了意荤,當(dāng)然了,很多功能我們也沒有涉及涛浙,因?yàn)樘?xì)節(jié)化了,需要大家自己在實(shí)踐中探究學(xué)習(xí)摄欲,至于其他的個(gè)性化熱圖呈現(xiàn)我們下節(jié)再講轿亮!

還是用上節(jié)的數(shù)據(jù),利用ComplexHeatmap包中的pheatmap函數(shù)作圖蒿涎。

setwd("D:/生物信息學(xué)")
A  <- read.csv("行列注釋.csv",header = T,row.names = 1)
library(ComplexHeatmap)
A <- as.matrix(A) #將表達(dá)矩陣轉(zhuǎn)化為matrix
pheatmap(A,scale = "row")

簡單畫一個(gè)熱圖哀托,雖然看似函數(shù)很像之前講的,但是實(shí)質(zhì)不一樣劳秋,這個(gè)是基于ComplexHeatmap包的仓手。


image.png

之后的行列信息注釋與之前所講一樣,相同的操作手法玻淑。

annotation_col = data.frame(
  group = c(rep("ST",3),rep("TZ",3),rep("TL",5),rep("TS",4),rep("TQ",3)),
  Stage = c(rep("Stage0", 3), rep("Stage1",8), rep("Stage2", 4), rep("Stage3",3)),
  Age = c(rep("30",2),rep("35",2),rep("30",4),rep("45",3),rep("34",3),rep("33",2),rep("31",2)),
  Sex = c(rep("F",3),rep("M",3),rep("F",6),rep("M",5),rep("F",1))
)
row.names(annotation_col) <- colnames(A)

annotation_row = data.frame(
  Biological_process = c(rep("Immune response",20), rep("Proteoglycans in cancer", 13),
                         rep("Glycolysis",18),rep("Endocytosis",35)),
  Pathway = c(rep("Wnt",20), rep("Inflammatory",32),rep("HIF",34))
)
row.names(annotation_row) <- rownames(A)

然后作圖嗽冒,與之前所講不同之處在于熱圖截?cái)鄷r(shí)不是靠隨機(jī)的聚類,而是可以自己根據(jù)分組截?cái)嗖孤模尤诵曰?/p>

B <- pheatmap(A, scale = "row",show_rownames = F,#不顯示行名
              show_colnames = F,#不顯示列名
              col = colorRampPalette(c("navy","white","firebrick3"))(100),
         annotation_col = annotation_col, #列注釋信息
         annotation_row = annotation_row,#行注釋信息
         row_split = annotation_row$Pathway,#行截?cái)啵ò凑誴athway添坊,不像之前隨機(jī))
         column_split = annotation_col$group,#列截?cái)?         annotation_names_row = F,#不顯示行注釋信息
         annotation_names_col = F ,#不顯示列注釋信息
         column_title = NULL,#不顯示列標(biāo)題
         row_title = NULL)#不顯示行標(biāo)題
image.png

然后還可以復(fù)習(xí)一下之前講的,熱圖只顯示感興趣的基因箫锤。

genes <- c("S100A8",
           "ILF2",
           "RPS27",
           "HAX1",
           "PBXIP1",
           "KRTCAP2",
           "FDPS",
           "DAP3",
           "TRAF3IP3",
           "EPRS",
           "CAPN2",
           "SRP9",
           "VAMP8",
           "VAMP5",
           "MAL",
           "DUSP2",
           "ZAP70")
genes <- as.data.frame(genes)
B + rowAnnotation(link = anno_mark(at = which(rownames(A) %in% genes$genes), 
                                   labels = genes$genes, labels_gp = gpar(fontsize = 10)))
image.png

ComplexHeatmap包隨機(jī)出現(xiàn)的染色搭配小編覺得都還可以贬蛙,所以不再修飾顏色,修飾的方法和之前一樣谚攒。其實(shí)到這里我們注意到每畫一次熱圖就會(huì)隨機(jī)設(shè)置一種顏色阳准,所以為了保持一致,最好設(shè)置隨機(jī)種子(seed())馏臭。

如果有兩個(gè)熱圖(B和C)想要在一起排列野蝇,可以利用如下非常簡單的代碼:

B + C
image.png

到這里還沒有結(jié)束,這個(gè)熱圖還可以更加復(fù)雜括儒,在其行列再加入一些信息绕沈,這里舉個(gè)例子,具體按照具體情況設(shè)置帮寻。假設(shè)我們要展示每個(gè)基因的平均表達(dá)量乍狐,并將其在熱圖體現(xiàn),就可以這么做规婆,在原來的熱圖上加一列:

baseMean = rowMeans(A)#求個(gè)平均值
pheatmap(A, scale = "row",show_rownames = F,
         show_colnames = F,
         col = colorRampPalette(c("navy","white","firebrick3"))(100),
         annotation_col = annotation_col,
         annotation_row = annotation_row,
         row_split = annotation_row$Pathway,
         column_split = annotation_col$group,
         annotation_names_row = F,
         annotation_names_col = F ,
         column_title = NULL,
         row_title = NULL)+
  Heatmap(baseMean,show_row_names = F)
image.png

ComplexHeatmap還有超級(jí)多的功能澜躺,有興趣可以去探索蝉稳,看看作者原文。這里講的已經(jīng)夠用了掘鄙,沒必要把所有的都學(xué)會(huì)耘戚。不過如果后面在文獻(xiàn)中見到其他有趣的圖,我們還是會(huì)去復(fù)現(xiàn)操漠,講解做法的收津!

下節(jié)預(yù)告---想講一下ggplot2畫熱圖,將這個(gè)是因?yàn)間gplot2在畫圖界YYDS浊伙,而且ggplot修飾性和操作也更多撞秋,也許會(huì)有不一樣的火花!

記得點(diǎn)贊+關(guān)注嚣鄙,學(xué)習(xí)不迷路N腔摺!哑子!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末舅列,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卧蜓,更是在濱河造成了極大的恐慌帐要,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弥奸,死亡現(xiàn)場離奇詭異榨惠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盛霎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門赠橙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人愤炸,你說我怎么就攤上這事简烤。” “怎么了摇幻?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挥萌。 經(jīng)常有香客問我绰姻,道長,這世上最難降的妖魔是什么引瀑? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任狂芋,我火速辦了婚禮,結(jié)果婚禮上憨栽,老公的妹妹穿的比我還像新娘帜矾。我一直安慰自己翼虫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布屡萤。 她就那樣靜靜地躺著珍剑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪死陆。 梳的紋絲不亂的頭發(fā)上招拙,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音措译,去河邊找鬼别凤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛领虹,可吹牛的內(nèi)容都是我干的规哪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼塌衰,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼诉稍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起猾蒂,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤均唉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后肚菠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舔箭,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蚊逢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了层扶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烙荷,死狀恐怖镜会,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情终抽,我是刑警寧澤戳表,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站昼伴,受9級(jí)特大地震影響匾旭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜圃郊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一价涝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧持舆,春花似錦色瘩、人聲如沸伪窖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽覆山。三九已至,卻和暖如春史辙,著一層夾襖步出監(jiān)牢的瞬間汹买,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工聊倔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晦毙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓耙蔑,卻偏偏與公主長得像见妒,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子甸陌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容