DoHeatmap的優(yōu)化+ComplexHeatmap繪制帶特定基因的單細(xì)胞熱圖


單細(xì)胞繪圖系列:


1. 使用DoHeatmap繪制Seurat自帶熱圖
library(Seurat)
library(dplyr)
pbmc <- readRDS("pbmc.rds") #導(dǎo)入注釋好的演示數(shù)據(jù)集
pbmc.markers <- FindAllMarkers(pbmc,only.pos = T,min.pct = 0.1,logfc.threshold = 0.25)
top10 <- pbmc.markers%>%group_by(cluster)%>%top_n(n=10,wt=avg_log2FC)
DoHeatmap(pbmc,features = top10$gene)+NoLegend()
##DoHeatmap輸入的的是scale.data矩陣

稍作優(yōu)化(調(diào)整熱圖顏色+調(diào)整細(xì)胞類型標(biāo)簽顏色惧浴,最好與UMAP圖一致)

DoHeatmap(pbmc,   
          features = as.character(unique(top10$gene)),   
          group.by = "cell_type",  
          assay = "RNA",  
          group.colors = c("#C77CFF","#7CAE00","#00BFC4","#F8766D","#AB82FF","#90EE90","#00CD00","#008B8B"))+  #設(shè)置組別顏色
  scale_fill_gradientn(colors = c("navy","white","firebrick3"))

scale_fill_gradientn()系列函數(shù)用法見:ggplot2點(diǎn)圖

更改橫軸順序(根據(jù)實際需要)

pbmc$cell_type <- factor(x = pbmc$cell_type, levels = c('Naive CD4 T','Memory CD4 T','CD8 T','CD14+ Mono','FCGR3A+ Mono','B','NK','DC','Platelet'))  
DoHeatmap(pbmc,   
          features = as.character(unique(top10$gene)),   
          group.by = "cell_type",  
          assay = "RNA",  
          group.colors = c("#C77CFF","#7CAE00","#00BFC4","#F8766D","#AB82FF","#90EE90","#00CD00","#008B8B","#FFA500"))+ #設(shè)置組別顏色
  scale_fill_gradientn(colors = c("navy","white","firebrick3"))#設(shè)置熱圖顏色  
2. 使用ComplexHeatmap繪制帶特定基因的熱圖

ComplexHeatmap
優(yōu)點(diǎn):功能非常強(qiáng)大,支持一張熱圖中分組分別聚類(control之間聚類嗦董,treatment之間聚類)
缺點(diǎn):參數(shù)基本上只適用于這一個包
參考:https://jokergoo.github.io/ComplexHeatmap-reference/book/

library(ComplexHeatmap)
##提取標(biāo)準(zhǔn)化表達(dá)矩陣
#??提取scale.data矩陣的時候一定要注意妓湘,做ScaleData()的時候一定是scale了所有的基因普气,而不是默認(rèn)的2000個基因 
mat <- GetAssayData(pbmc,slot = 'scale.data')
##獲得基因和細(xì)胞聚類信息
gene_features <- top10
cluster_info <- sort(pbmc$cell_type)
##篩選矩陣
mat <- as.matrix(mat[top10$gene,names(cluster_info)])
##輸入想在圖上展示出來的marker基因泡嘴,獲得基因在熱圖中的位置信息 
gene <- c('CD3E','CD8B','S100A9','CD14','LYZ',"CD79B","GNLY","GZMB","PF4")
gene_pos <- which(rownames(mat)%in%gene)
row_anno <- rowAnnotation(gene=anno_mark(at=gene_pos,labels = gene))
##畫個熱圖看看
Heatmap(mat,
        cluster_rows = FALSE,
        cluster_columns = FALSE,
        show_column_names = FALSE,
        show_row_names = FALSE,
        column_split = cluster_info,
        right_annotation = row_anno)

做一下美化,調(diào)整一下顏色

##設(shè)置列標(biāo)簽的顏色鸣个,最好和umap/tsne細(xì)胞群的顏色一一對應(yīng) 
col <- c('plum','coral1','bisque','gold2','hotpink3','lightsalmon3','rosybrown2','lightcyan2','thistle3')
names(col) <- levels(cluster_info)
top_anno <- HeatmapAnnotation(cluster=anno_block(gp=gpar(fill=col),
                                                 labels = levels(cluster_info),
                                                 labels_gp = gpar(cex=0.5,col='white')))
##給熱圖改個好看的顏色
library(circlize)
col_fun = colorRamp2(c(-2, 1, 4), c("#377EB8", "white", "#E41A1C"))
#col_fun2 = colorRamp2(c(-2, 1, 4), c("#92b7d1", "white", "#d71e22"))
Heatmap(mat,
        cluster_rows = FALSE,
        cluster_columns = FALSE,
        show_column_names = FALSE,
        show_row_names = FALSE,
        column_split = cluster_info,
        top_annotation = top_anno, #在熱圖邊上增加注釋
        column_title = NULL,
        right_annotation = row_anno,
        heatmap_legend_param = list(
          title='Expression',
          title_position='leftcenter-rot'),
        col = col_fun)

完成~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載辑畦,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者吗蚌。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市纯出,隨后出現(xiàn)的幾起案子蚯妇,更是在濱河造成了極大的恐慌,老刑警劉巖潦刃,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侮措,死亡現(xiàn)場離奇詭異,居然都是意外死亡乖杠,警方通過查閱死者的電腦和手機(jī)分扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胧洒,“玉大人畏吓,你說我怎么就攤上這事墨状。” “怎么了菲饼?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵肾砂,是天一觀的道長。 經(jīng)常有香客問我宏悦,道長镐确,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任饼煞,我火速辦了婚禮源葫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘砖瞧。我一直安慰自己息堂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布块促。 她就那樣靜靜地躺著荣堰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竭翠。 梳的紋絲不亂的頭發(fā)上振坚,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音逃片,去河邊找鬼屡拨。 笑死,一個胖子當(dāng)著我的面吹牛褥实,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裂允,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼损离,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绝编?” 一聲冷哼從身側(cè)響起僻澎,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎十饥,沒想到半個月后窟勃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逗堵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年秉氧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜒秤。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡汁咏,死狀恐怖亚斋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情攘滩,我是刑警寧澤帅刊,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站漂问,受9級特大地震影響赖瞒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚤假,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一冒黑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勤哗,春花似錦抡爹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至民逼,卻和暖如春泵殴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拼苍。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工笑诅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疮鲫。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓吆你,卻偏偏與公主長得像,于是被迫代替她去往敵國和親俊犯。 傳聞我的和親對象是個殘疾皇子妇多,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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