RNA_seq 热图绘制

Posted zhanmaomao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RNA_seq 热图绘制相关的知识,希望对你有一定的参考价值。

若已经拿到表达矩阵exprSet

若差异较大,进行log缩小不同样本的差距

1、热图全体

 1 ##加载包
 2 library(pheatmap)
 3 
 4 ##缩小表达量差距
 5 exprSet <- log2(exprSet+1)
 6 
 7 ##取最大标准差前1000个基因名字
 8 cg <-names(tail(sort(apply(exprSet,1,sd)),1000))
 9 
10 ##标准化,只关注样品间基因差异,不关注基因之间的,将离群点拉平
11 n <-t(scale(t(exprSet[cg,])))
12 n[n>2] <-2
13 n[n<-2] <-2
14 
15 ##这是group_list
16 group_list <-c(rep("a",3),rep("b",3))
17 ac <- data.frame(sample=group_list)
18 rownames(ac) <- colnames(n)
19 
20 ##draw pheatmap,其中annotation_col 可以增加sample组
21 pheatmap(n, show_rownames = F, show_colnames = F,
22          annotation_col = ac)
23 
24 ##draw pheatmap add number
25 pheatmap(n, show_rownames = F, show_colnames = F,
26          annotation_col = ac, display_numbers = TRUE)

 

技术图片

 

2、对差异基因进行绘制,步骤都类似,在进行绘制时,应对数据进行一定处理

 1 ##DEseq2 获得dds
 2 dds <- DESeq2(dds)
 3 res <- results(dds)
 4 res <- res[order(res$padj),]
 5 DEG <- as.data.frame(res)
 6 
 7 ##去掉NA
 8 DEG <- na.omit(DEG)
 9 
10 ##热图
11 library(pheatmap)
12 choose_gene <- head(rownames(DEG),100)  ##50 maybe better
13 choose_matrix <- exprSet[choose_gene,]
14 choose_matrix <- t(scale(t(choose_matrix)))
15 pheatmap(choose_matrix, show_rownames = F, show_colnames = F,
16          annotation_col = ac)

技术图片

 

3、rlog 进行数据标准化

1 ##rlog 标准化
2 rld <- rlog(dds)
3 ##读取
4 exprMatrix_rlog <- assay(rld)
5 ##输出
6 write.csv(exprMatrix_rlog, exprMatrix.rlog.csv)

标准化和raw count 的比较

png("DEseq_RAWvsNORM.png",height = 800,width=800)
par(cex= 0.7)
n.samples <- ncol(exprSet)
if(n.samples>40) par(cex=0.5)
cols <- rainbow(n.samples*1.2)
par(mfrow =c(2,2))
boxplot(exprSet,col=cols, main="expression value",las=2)
boxplot(exprMatrix_rlog,col=cols, main="expression value",las=2)
hist(as.matrix(exprSet))
hist(exprMatrix_rlog)
dev.off()

技术图片

可以看到rlog后,样本间可以进行很好观察

 

参考:生信技能树

以上是关于RNA_seq 热图绘制的主要内容,如果未能解决你的问题,请参考以下文章

使用 ggplot 绘制 300 多个单位的热图

ggplot2 热图绘制

网格搜索后如何在 pivot_table 上绘制热图

【R】热图绘制

添加滑块以绘制热图动画-python

如何用R语言绘制热图