之前我們交替介紹了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包的仓手。
之后的行列信息注釋與之前所講一樣,相同的操作手法玻淑。
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)題
然后還可以復(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)))
ComplexHeatmap包隨機(jī)出現(xiàn)的染色搭配小編覺得都還可以贬蛙,所以不再修飾顏色,修飾的方法和之前一樣谚攒。其實(shí)到這里我們注意到每畫一次熱圖就會(huì)隨機(jī)設(shè)置一種顏色阳准,所以為了保持一致,最好設(shè)置隨機(jī)種子(seed())馏臭。
如果有兩個(gè)熱圖(B和C)想要在一起排列野蝇,可以利用如下非常簡單的代碼:
B + C
到這里還沒有結(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)
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腔摺!哑子!