marker基因注釋熱圖可視化函數(shù)(視頻教程-通用函數(shù))

這里我們分享一個熱圖函數(shù)树枫,是一個可視化的函數(shù)募舟,您只需要提供作圖的matrix數(shù)據(jù)即可。最近對于圖形注釋使用點比較上頭盹兢,所以我們這個函數(shù)的列注釋使用設(shè)置的·是點的注釋形狀邻梆。我們的函數(shù)解決了以下幾個問題:

  • 數(shù)據(jù)的自動排序和列的自定義排列,數(shù)據(jù)會按照你需要的列順序自動從大到小排列绎秒,讓熱圖可視化更加美觀浦妄。

  • 熱圖的列自動注釋,我們采用了點的注釋见芹。

  • legend的修改剂娄,包括刻度等修飾。

  • 行的注釋玄呛,行的注釋需要自行 調(diào)整阅懦,函數(shù)設(shè)置了可選擇選項。

  • 行的標(biāo)簽徘铝,在函數(shù)中我們設(shè)置了如果矩陣nrow行數(shù)大于100自動不顯示行名耳胎,應(yīng)為那樣都擠在一起也沒啥用。后續(xù)可自 行挑選需要的行進(jìn)行展示惕它。

  • 需要注意一下怕午,函數(shù)有一個參數(shù)data_scale,假設(shè)你的數(shù)據(jù)不需要scale標(biāo)準(zhǔn)化淹魄,那么參數(shù)選擇T郁惜,作圖使用你的原始數(shù) 據(jù)。如果需要scale標(biāo)準(zhǔn)化甲锡,那么選擇F扳炬,會對你的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。

看一下函數(shù)參數(shù):(未標(biāo)注參數(shù)與Complexheatmap::Heatmap一致)

參考鏈接:
https://www.bilibili.com/video/BV1C34y137R4/?spm_id_from=333.999.0.0&vd_source=05b5479545ba945a8f5d7b2e7160ea34

接下來我們看看函數(shù)具體的使用搔体,首先我們用一個ATAC TF分析的數(shù)據(jù),這個矩陣是已經(jīng)導(dǎo)出的半醉,行是celltype疚俱,列是TF。其 實就是我們平時做熱圖的時候一樣的數(shù)據(jù)缩多。Order_col就是設(shè)置列的順序呆奕,我這里直接演示就使用了數(shù)據(jù)的列名排列,如果 需要自己設(shè)置衬吆,這里傳入一個向量梁钾,設(shè)置順序即可。顏色也是可以設(shè)置的逊抡。

setwd("D:/KS項目/公眾號文章/scATAC-scRNA marker基因注釋熱圖")
#=================================================================================
#---------------------------------------------------------------------------------
TF <- c("JUND (264)","FOSB (190)",
        "JDP2 (178)","TAL1 (42)",
        "TAL2 (42)","TCF21 (21)",
        "TCF23 (21)","BCL11A (799)",
        "BCL11B (799)","ELF2 (364)",
        "NFIX (89)","GBX2 (87)",
        "SOX9 (145)","SOX4 (95)",
        "SOX13 (92)","SOX12 (91)",
        "NHLH2 (149)","TCF12 (159)",
        "ZBTB7A (98)")

plot_atac <- read.csv('plot_atac.csv', header = T, row.names = 1)


pdf('heatmap1.pdf', width=4, height=6)
heata = ks_Heatmap(mat = plot_atac,
           data_scale = T,
           Order_col = colnames(plot_atac),
           legendTitle = "Norm.Enrichment -log10(P-adj)[0-Max]",
           point_size = 5,
           heat_col = c("#E6E7E8","#3A97FF","#8816A7","black"),
           TitlePosition = "leftcenter-rot",
           legend_at = c(0,50,100),
           legend_Lab = c(0,50,100),
           column_names_gp = gpar(fontsize = 6),
           row_names_gp = gpar(fontsize = 6),
           customRowLabel=TF,
           colanno_color = c("#7DD06F","#844081","#688EC1","#C17E73","#484125","#6CD3A7","#597873",'#3361A5'),
           rowAnn = T,
           rowAnno_num = c(16,3,1,4,12,9,8,11))

draw(heata, merge_legends = TRUE,heatmap_legend_side = "right") 
dev.off()

接下來我們用單細(xì)胞轉(zhuǎn)錄組的數(shù)據(jù)進(jìn)行演示:我們這里的演示選擇的是每個celltype的top10marker基因姆泻。首先計算 marker基因零酪,并計算每個celltype的平均值。獲得作圖數(shù)據(jù)拇勃。

library(Seurat)
library(dplyr)
#單細(xì)胞數(shù)據(jù)的演示\先找marker基因
DefaultAssay(sce) <- "RNA"
Idents(sce) <- "celltype"
all.markers  <- FindAllMarkers(sce, only.pos = TRUE, min.pct = 0.5, logfc.threshold = 0.5)
top10 <- all.markers %>% group_by(cluster) %>% top_n(n=10, wt=avg_log2FC)
table(top10$cluster)
# SMC  LY UEC  SF CEC  EC MAC 
# 10  10  10  10  10  10  10 
#計算平均表達(dá)量
gene_cell_exp <- AverageExpression(sce,features = top10$gene,group.by = 'celltype',slot = 'data') 
gene_cell_exp <- as.data.frame(gene_cell_exp$RNA)

作圖:


genes = c("ACTA2",
          "ADIRF",
          "MYL9",
          "TPM2",
          "CCL4",
          "CCL5",
          "NKG7",
          "CD96",
          "RHEX",
          "NPAS3",
          "SFRP4",
          "COL3A1",
          "COL1A1",
          "IGF1",
          "RORB",
          "CAPS",
          "CFAP299",
          "CFAP47",
          "RSPH1",
          "DNAH11",
          "PTPRB",
          "INSR",
          "ENPP2",
          "IL1B",
          "HLA-DQA1",
          "HLA-DRA",
          "HLA-DPA1",
          "HLA-DRB1",
          "HLA-DPB1",
          "CXCL8")

#plot
pdf('heatmap2.pdf', width=4, height=6)
heata = ks_Heatmap(mat = gene_cell_exp,
                   data_scale = F,
                   Order_col = colnames(gene_cell_exp),
                   legendTitle = "Expression",
                   point_size = 5,
                   heat_col = c('#e0f3db','#a8ddb5','#4eb3d3','#0868ac','#084081'),
                   TitlePosition = "leftcenter-rot",
                   legend_at = c(-1,0,1,2,3),
                   legend_Lab = c(-1,0,1,2,3),
                   column_names_gp = gpar(fontsize = 6),
                   row_names_gp = gpar(fontsize = 6),
                   customRowLabel=genes,
                   colanno_color = c("#7DD06F","#844081","#688EC1","#C17E73","#484125","#6CD3A7","#597873"),
                   rowAnn = T,
                   rowAnno_num = c(10,10,10,10,10,10,10))

draw(heata, merge_legends = TRUE,heatmap_legend_side = "right") 
dev.off()

這里我們可能會發(fā)現(xiàn)一個問題四苇,明明是每個celltype10個gene,為什么行注釋好像不是很對方咆,這是應(yīng)為有些基因不僅在一 中celltype中高表達(dá)月腋,而數(shù)據(jù)是按照表達(dá)從高到低排序的,所以才會出現(xiàn)這個問題瓣赂,可以自行調(diào)整注釋的數(shù)目榆骚,或者不采用注釋等。一個函數(shù)不可能完成所有的事情煌集,但是我們提供了框架和思路妓肢,可自行修改拓展。覺得分享有用的點個贊牙勘,分享一下再走唄职恳!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市方面,隨后出現(xiàn)的幾起案子放钦,更是在濱河造成了極大的恐慌,老刑警劉巖恭金,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件操禀,死亡現(xiàn)場離奇詭異,居然都是意外死亡横腿,警方通過查閱死者的電腦和手機(jī)颓屑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耿焊,“玉大人揪惦,你說我怎么就攤上這事÷藓睿” “怎么了器腋?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钩杰。 經(jīng)常有香客問我纫塌,道長,這世上最難降的妖魔是什么讲弄? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任措左,我火速辦了婚禮,結(jié)果婚禮上避除,老公的妹妹穿的比我還像新娘怎披。我一直安慰自己胸嘁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布钳枕。 她就那樣靜靜地躺著缴渊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鱼炒。 梳的紋絲不亂的頭發(fā)上衔沼,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音昔瞧,去河邊找鬼指蚁。 笑死,一個胖子當(dāng)著我的面吹牛自晰,可吹牛的內(nèi)容都是我干的凝化。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酬荞,長吁一口氣:“原來是場噩夢啊……” “哼搓劫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起混巧,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤枪向,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咧党,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秘蛔,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年傍衡,在試婚紗的時候發(fā)現(xiàn)自己被綠了深员。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛙埂,死狀恐怖倦畅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绣的,我是刑警寧澤叠赐,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站被辑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏敬惦。R本人自食惡果不足惜盼理,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俄删。 院中可真熱鬧宏怔,春花似錦奏路、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抓艳,卻和暖如春触机,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玷或。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工儡首, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偏友。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓蔬胯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親位他。 傳聞我的和親對象是個殘疾皇子氛濒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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