在熱圖中標(biāo)注出特定基因的名稱

對于基因的差異表達譜,常用熱圖作為展示。但有時差異基因可能非常的多,熱圖中不可能將所有基因的名稱標(biāo)注出來。那么此時不妨選擇一些比較重要的基因(比方說p值最顯著的那些),在圖中指示它們的位置。

我們來看這篇文獻“Transcriptome Profiling of Adipose Tissue Reveals Depot-Specific Metabolic Alterations Among Patients with Colorectal Cancer”中,是怎樣展示熱圖的。文中比較了結(jié)直腸癌患者的內(nèi)臟脂肪組織(VAT)和皮下脂肪組織(SAT)的轉(zhuǎn)錄組譜,將差異表達的基因展示為熱圖。熱圖整體結(jié)構(gòu)在標(biāo)注了部分基因后,并未顯得凌亂,同時還能告知讀者哪些基因是重要的,必要時還可仔細比較它們的表達值,是種不錯的表現(xiàn)方法。

文獻插圖,熱圖中只標(biāo)識出重要的基因或蛋白名稱

圖1,(a)VAT和SAT之間差異表達基因的熱圖。

準(zhǔn)備作圖文件

接下來,就讓小編帶大家了解怎樣在R中繪制這種只標(biāo)識重要基因的熱圖。

示例數(shù)據(jù)和R代碼等,可點擊這里獲取


為了繪制這種熱圖,首先要準(zhǔn)備兩類數(shù)據(jù)。

(1)基因表達矩陣,行是基因,列是樣本,表達值可以是FPKM或者log轉(zhuǎn)化后的表達值等都可以。

示例文件,基因表達值矩陣

(2)基因名稱列表,將待標(biāo)識的重要基因名稱以一排的形式放在一個列表中。

示例文件,重要的少數(shù)基因的名稱列表

R包ComplexHeatmap的熱圖繪制

隨后,將上述兩個數(shù)據(jù)導(dǎo)入R中,繪制熱圖。

首先讀取基因表達值矩陣,繪制一個常規(guī)的無基因名稱的熱圖。

#讀取的示例文件
#gene.txt是基因表達值矩陣
#name.txt是帶展示名稱的基因列表

#加載ComplexHeatmap包繪制這種類型的熱圖
library(ComplexHeatmap)

#表達矩陣,考慮到ComplexHeatmap沒有scale參數(shù),因此需事先手動做個行標(biāo)準(zhǔn)化
mat <- read.delim('gene.txt', row.names = 1, check.names = FALSE)
for (i in 1:nrow(mat)) mat[i, ] <- scale(log(unlist(mat[i, ]) + 1, 2))
mat <- as.matrix(mat)

#定義樣本分組,例如示例文件中共 A、B、C 3組
samples <- rep(c('A', 'B', 'C'), c(3, 3, 3))    

#先繪制一個不顯示任何基因名稱的熱圖
heat <- Heatmap(mat, 
    col = colorRampPalette(c('green', 'black', 'red'))(100), #定義熱圖由低值到高值的漸變顏色
    heatmap_legend_param = list(grid_height = unit(10,'mm')),  #圖例高度設(shè)置
    show_row_names = FALSE,  #不展示基因名稱
    top_annotation = HeatmapAnnotation(Group = samples, 
        simple_anno_size = unit(2, 'mm'), 
        col = list(Group = c('A' = '#00DAE0', 'B' = '#FF9289', 'C' = 'blue')),  #定義樣本分組的顏色
        show_annotation_name = FALSE), 
    column_names_gp = gpar(fontsize = 10), row_names_gp = gpar(fontsize = 6))

heat
一個常規(guī)的不展示基因名稱的熱圖

隨后,將重要的待展示名稱的基因名稱列表讀入到R中,并添加在熱圖右側(cè)顯示出。

#讀取待展示的基因名稱,并添加到熱圖中
name <- read.delim('name.txt', header = FALSE, check.names = FALSE)
heat + rowAnnotation(link = anno_mark(at = which(rownames(mat) %in% name$V1), 
    labels = name$V1, labels_gp = gpar(fontsize = 10)))
右側(cè)標(biāo)識重要基因的名稱

這就搞定了,是不是非常簡單實用呢?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容