在热图中画的相关基因趋势线

我们在做差异表达聚类的时候,往往会根据表达谱用相关R包画聚类情况,聚类图很漂亮,但是如果我想看 Q型聚类里面相关基因在各样本之间的表达趋势变化怎么办。
这里教你一招:

step1:

假设我们使用DESeq 标准化后的数据,对标准化后的矩阵进行聚类(我取了log2(data + 1))

library(ggplot2)
library(pheatmap)
library(reshape2)

nor_total <- as.data.frame(counts(dds,normalized = T))
p = log2(nor_total + 1) #p是已经经过DESeq标准化,并取log2后的矩阵
q = pheatmap::pheatmap(p,show_rownames = F, cellwidth =40, cluster_cols = F, 
                   cutree_rows = 6,gaps_col = c(2,4,6), angle_col = 45,fontsize = 12)
image.png

step2:

整理表格,选择cluster

# 获取聚类后的基因顺序
row_cluster = cutree(q$tree_row,k=6)
# 对聚类后的数据进行重新排序
newOrder = p[q$tree_row$order,]
newOrder[,ncol(newOrder)+1]= row_cluster[match(rownames(newOrder),names(row_cluster))]
#将第七列数据改下名称“Cluster”
colnames(newOrder)[ncol(newOrder)]="Cluster"
unique(newOrder$Cluster)
table(newOrder$Cluster)
#添加cluster种类
newOrder$Cluster = paste0("cluster",newOrder$Cluster)
#添加基因名
newOrder$gene = rownames(newOrder)
newOrder样板
# 将短数据格式转换为长数据格式
data_new = melt(newOrder)

ggplot(data_new,aes(variable, value, group=gene)) + geom_line(color="gray90",size=0.8) + 
  geom_hline(yintercept =0,linetype=2) +
  stat_summary(aes(group=1),fun.y=mean, geom="line", size=1.2, color="#c51b7d") + 
  facet_wrap(Cluster~.) + #可选择你想看的cluster,这里展示所有的cluster
  theme_bw() + 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.text = element_text(size=8, face = "bold"),
        strip.text = element_text(size = 8, face = "bold"))
image.png

图有点丑,关键是提供方法。

参考:https://www.jianshu.com/p/2fb09c221e71

你可能感兴趣的:(在热图中画的相关基因趋势线)