ComplexHeatmap繪制復(fù)雜熱圖——多個熱圖和多條注釋的合并展示

當(dāng)需要展示多個數(shù)據(jù)集之間的關(guān)聯(lián)并揭示可能存在的潛在模式時蹂季,ComplexHeatmap包就有了用武之地。下面提供一個實例。

1. 文件準(zhǔn)備。

需要4個文件融蹂。包括兩個heatmap數(shù)據(jù)文件mRNA.txt和circRNA.txt,兩個anotation文件anotation_con.txt和anotation_dis.txt廓潜。其中mRNA.txt和circRNA.txt里是基因的表達譜數(shù)值阱佛,anotation_con.txt里是連續(xù)型變量屬性值,anotation_dis.txt里是離散型變量屬性值耍缴。4個文件的第一列需要保持一致砾肺。

a. mRNA.txt
mRNA.txt
b. circRNA.txt
circRNA.txt
c. anotation_con.txt
anotation_con.txt
d. anotation_dis.txt
anotation_dis.txt

2. 代碼。

a. 加載包防嗡,讀取表達譜文件变汪,構(gòu)建聚類樹。
library(ComplexHeatmap)
library(circlize)

mydata1 <- read.table("mRNA.txt", header =T, row.names=1, sep = "\t", quote = "\"'", check.names=F)
groupn1 <- sub("\\d+", "", colnames(mydata1), perl=TRUE)
mydata1_colnames <- colnames(mydata1)
mydata1 <- t(apply(mydata1, 1, scale))              # 進行標(biāo)準(zhǔn)化
colnames(mydata1) <- mydata1_colnames

mydata2 <- read.table("circRNA.txt", header =T, row.names=1, sep = "\t", quote = "\"'", check.names=F)
groupn2 <- sub("\\d+", "", colnames(mydata2), perl=TRUE)
mydata2_colnames <- colnames(mydata2)
mydata2 <- t(apply(mydata2, 1, scale))
colnames(mydata2) <- mydata2_colnames

column_tree = hclust(dist(t(mydata1)))        # 對mydata1聚類
colset <- colorRamp2(seq(min(mydata1, mydata2),max(mydata1, mydata2),length=3), c("blue", "#EEEEEE", "red"))        # 設(shè)置顏色
b. 配置heatmap1蚁趁。行列分別聚類裙盾。
annot1 <- data.frame(Group1=groupn1)
col_group1=list(Group1=structure(rainbow(length(unique(groupn1))), names=unique(groupn1)))
ha1 = HeatmapAnnotation(df=annot1, col=col_group1, show_legend = F, show_annotation_name=F)
H1 = Heatmap(mydata1, clustering_distance_rows = "euclidean", clustering_method_rows = "average", clustering_distance_columns = "euclidean", clustering_method_columns = "average", cluster_columns = column_tree, column_dend_reorder = F, show_row_names = T, show_column_dend=T, column_title = "mRNA", name = "mRNA", col = colset, top_annotation = ha1, row_title_gp = gpar(fontsize = 8))
c. 配置heatmap2。按照heatmap1的聚類模式進行聚類他嫡。
annot2 <- data.frame(Group2=groupn2)
col_group2=list(Group2=structure(rainbow(length(unique(groupn2))), names=unique(groupn2[column_tree$order])))
ha2 = HeatmapAnnotation(df=annot2, col=col_group2, show_legend = F, show_annotation_name=F)
H2 = Heatmap(mydata2[, column_tree$order], name = "circRNA", col = colset, cluster_columns = F, top_annotation = ha2, show_row_names = T, column_title = "circRNA", show_heatmap_legend=T)
d. 配置連續(xù)型anotation的heatmap番官。
andata_con <- read.table("anotation_con.txt", header =T, row.names=1, sep = "\t", quote = "\"'", check.names=F)
Han_con1 = Heatmap(andata_con[,1], name = colnames(andata_con)[1], col = colorRamp2(seq(min(andata_con[,1]),max(andata_con[,1]),length=2), c("white", "red")))
Han_con2 = Heatmap(andata_con[,2], name = colnames(andata_con)[2], col = colorRamp2(seq(min(andata_con[,2]),max(andata_con[,2]),length=2), c("white", "red")))
e. 配置離散型anotation的heatmap。
andata_dis <- read.table("anotation_dis.txt", header =T, row.names=1, sep = "\t", quote = "\"'", check.names=F)
Han_dis1 = Heatmap(andata_dis[,1], name = colnames(andata_dis)[1])
Han_dis2 = Heatmap(andata_dis[,2], name = colnames(andata_dis)[2])
f. 配置并輸出圖片钢属。
ht_opt(legend_title_gp = gpar(fontsize = 12, fontface = "bold"), legend_labels_gp = gpar(fontsize = 10), heatmap_column_names_gp = gpar(fontsize = 8))
draw(H1 + H2 + Han_con1 + Han_con2 + Han_dis1 + Han_dis2, newpage = F, auto_adjust = FALSE, column_title = "Comprehensive correspondence between mRNA and CircRNA", column_title_gp = gpar(fontsize = 15, fontface = "bold"), heatmap_legend_side = "right")

3. 最終的圖片徘熔。

ComplexHeatmap.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市署咽,隨后出現(xiàn)的幾起案子近顷,更是在濱河造成了極大的恐慌生音,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窒升,死亡現(xiàn)場離奇詭異缀遍,居然都是意外死亡,警方通過查閱死者的電腦和手機饱须,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門域醇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蓉媳,你說我怎么就攤上這事譬挚。” “怎么了酪呻?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵减宣,是天一觀的道長。 經(jīng)常有香客問我玩荠,道長漆腌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任阶冈,我火速辦了婚禮闷尿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘女坑。我一直安慰自己填具,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布匆骗。 她就那樣靜靜地躺著劳景,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绰筛。 梳的紋絲不亂的頭發(fā)上枢泰,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音铝噩,去河邊找鬼衡蚂。 笑死,一個胖子當(dāng)著我的面吹牛骏庸,可吹牛的內(nèi)容都是我干的毛甲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼具被,長吁一口氣:“原來是場噩夢啊……” “哼玻募!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起一姿,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤七咧,失蹤者是張志新(化名)和其女友劉穎跃惫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艾栋,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡爆存,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝗砾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片先较。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悼粮,靈堂內(nèi)的尸體忽然破棺而出闲勺,到底是詐尸還是另有隱情,我是刑警寧澤扣猫,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布菜循,位于F島的核電站,受9級特大地震影響申尤,放射性物質(zhì)發(fā)生泄漏债朵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一瀑凝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臭杰,春花似錦粤咪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至磁奖,卻和暖如春囊拜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背比搭。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工冠跷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人身诺。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓蜜托,卻偏偏與公主長得像,于是被迫代替她去往敵國和親霉赡。 傳聞我的和親對象是個殘疾皇子橄务,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

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