pheatmap 相关性热图 基因表达量热图

热图

热图概念:热图是一个以颜色变化来显示数据的矩阵,可以简单地聚合大量数据,并使用一种渐进的色带直观地展现空间数据的相对大小。

热图在生物学中的应用:生物学中热图经常用于展示多个基因在不同样本中的表达水平。然后可以通过聚类等方式查看不同组(如疾病组和对照组)特有的形式。热图还可以用于展示其他物质的丰度比如微生物的相对丰度、代谢组不同物质的含量等等。当然,另一个热图的重要用处就是展现不同指标、不同样本等之间的相关性。

数据准备

  1. 多个样本genes/transcripts read counts 文件
  2. 多个样本genes/transcripts FPKM/TPM 文件
    如果得到单个样本all genes read counts, 需要先合并:
    数据格式如下:


    image.png
##相关性热图,使用数据gene_fpkm.csv
setwd("C:/Users/Desktop/Transcriptome/data/GSE101668_RAW")
fpkm<-read.csv("GSE101668_fpkm.csv",head=T,row.names=1)
head(fpkm)[,1:6]

#         GSM2711785 GSM2711786 GSM2711787 GSM2711788 GSM2711789 GSM2711790
#A1BG     0.09811600 0.05790660 0.05222180  0.0637481 0.04535840  0.0950140
#A1BG-AS1 0.27003800 0.23612600 0.31530100  0.2080520 0.24668500  0.2326070
#A1CF     0.02785390 0.02190900 0.00000000  0.0180425 0.04533540  0.0280336
#A2M      0.00438851 0.00000000 0.00000000  0.0000000 0.00000000  0.0000000
#A2M-AS1  0.07776420 0.10491300 0.12424300  0.1718890 0.07193070  0.1381680
#A2ML1    0.00000000 0.00366506 0.00463368  0.0000000 0.00670476  0.0000000
##求相关性
sample_cor<-cor(fpkm)
head(sample_cor)
 #          GSM2711785 GSM2711786 GSM2711787 GSM2711788 GSM2711789 GSM2711790
#GSM2711785  1.0000000  0.9981079  0.9856211  0.9964200  0.9539448  0.9555485
#GSM2711786  0.9981079  1.0000000  0.9855960  0.9965623  0.9541515  0.9556389
#GSM2711787  0.9856211  0.9855960  1.0000000  0.9886970  0.9414432  0.9429842
#GSM2711788  0.9964200  0.9965623  0.9886970  1.0000000  0.9520301  0.9537503
#GSM2711789  0.9539448  0.9541515  0.9414432  0.9520301  1.0000000  0.9992366
#GSM2711790  0.9555485  0.9556389  0.9429842  0.9537503  0.9992366  1.0000000
cor.fpkm1.png

pheatmap画图

#调整参数,换颜色
library(pheatmap)
library(ggplot2)
p1<-pheatmap(sample_cor,cluster_rows = F,
         scale="none",
         cluster_cols = F,
         fontsize_row = 10,
         fontsize_col = 10,
         color = colorRampPalette(c("navy", "white", "firebrick3"))(100),
         #color = colorRampPalette(c("green3", "white", "blue4"))(100),#换颜色
         angle_col = 45, #修改横轴坐标名倾斜度
         filename = 'cor.fpkm2.png',
)
cor.fpkm2.png

基因fpkm表达量热图

  1. 基因fpkm表达量准备
#过滤标准:保留基因在大于floor(ncol(exprSet)/10)个样本中表达量大于1
fpkm_filter=fpkm[apply(fpkm,1,function(x) sum(x>1) > floor(ncol(fpkm)/10)),]
dim(fpkm)
dim(fpkm_filter)
> dim(fpkm)
[1] 26228    12
> dim(fpkm_filter)
[1] 11670    12
#用log2(fpkm_filter+1)标准化
data=log2(fpkm_filter+1)
#选取每个基因表达量的变异系数最大的1000个
genes=names(head(sort(apply(data,1,function(x) 100*sd(x)/mean(x)),decreasing=T),1000))#apply按行('1'是按行取,'2'是按列取)取每一行的方差,从小到大排序,取最大的1000个
dat=t(scale(t(data[genes,]))) # 'scale'可以对log(fpkm+1)数值进行归一化
#处理数据
dat[dat>2]=2 
dat[dat<-2]= -2
  1. 样本分组信息准备
df_info=data.frame(read.table("samplename.txt"),stringsAsFactors = F)                                          
head(df_info)
 #           CellType GroupList
#GSM2711785        WT        WT
#GSM2711786        WT        WT
#GSM2711787 PRDM1-KO2        KO
#GSM2711788 PRDM1-KO2        KO
#GSM2711789 PRDM1-KO5        KO
#GSM2711790 PRDM1-KO5        KO

df1 = df_info[,-1,drop=FALSE]
head(df1)
# GroupList
#GSM2711785        WT
#GSM2711786        WT
#GSM2711787        KO
#GSM2711788        KO
#GSM2711789        KO
#GSM2711790        KO

情况1:一类分组:KO,OE,WT

#####分组KO,OE,WT
p2<-pheatmap(
  mat=dat,
  cluster_rows = T,
  cluster_columns = F,
  border_color      = NA,
  show_colnames     = FALSE,
  show_rownames     = FALSE,
  fontsize          = 14,
  annotation_col    = df1,
  drop_levels       = TRUE,
  main              = "Default Heatmap1",   
  filename = 'heatmap_top1000_1.png'
)
heatmap_top1000_1.png
#如果要调色
library(RColorBrewer)
library(viridis)
mat_colors <- list(GroupList = brewer.pal(3, "Set1"))
names(mat_colors$GroupList) <- unique(df1[,1])
p3<-pheatmap(
  mat=dat,
  cluster_rows = T,
  cluster_columns = F,
  border_color      = NA,
  show_colnames     = FALSE,
  show_rownames     = FALSE,
  fontsize          = 14,
  annotation_col    = df1,
  annotation_colors = mat_colors,
  drop_levels       = TRUE,
  main              = "Default Heatmap2",   
  color = colorRampPalette(c("navy", "white", "firebrick3"))(100),
  #filename = 'heatmap_top1000_2.png'
)

情况2:两类分组

#两类分组1.Celltype;2. GroupList
p4<-pheatmap(
  mat=dat,
  cluster_rows = T,
  cluster_columns = F,
  border_color      = NA,
  show_colnames     = FALSE,
  show_rownames     = FALSE,
  fontsize          = 14,
  annotation_col    = df_info,
  drop_levels       = TRUE,
  main              = "Default Heatmap",
  filename = 'heatmap_top1000_rtg.png'
)

两类分组自定义颜色

#两组分类CellType/GroupList,自己设定颜色
mat_colors <- list(CellType = brewer.pal(6, "Set1"),GroupList = brewer.pal(3, "Set1"))
names(mat_colors$CellType) <- unique(df_info[,1])
names(mat_colors$GroupList) <- unique(df_info[,2])

p5<-pheatmap(
  mat=dat,
  cluster_rows = T,
  cluster_columns = F,
  border_color      = NA,
  show_colnames     = FALSE,
  show_rownames     = FALSE,
  fontsize          = 14,
  annotation_col    = df_info,
  annotation_colors = mat_colors,
  drop_levels       = TRUE,
  main              = "Default Heatmap",
  color = colorRampPalette(c("navy", "white", "firebrick3"))(100),  ##调颜色
  #color             = inferno(10),
  #color             = rainbow(10),
  filename = "heatmap_top1000_tg.png"
)
heatmap_top1000_tg.png

鲜艳的热图就这样完成啦!

如果您需要组学服务,请联系我们!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339