pheatmap, gplots heatmap.2和ggplot2 geom_tile實現數據聚類和熱圖plot


主要步驟

pheatmap

  • 數據處理成矩陣形式,給行名列名
  • 用pheatmap畫熱圖(pheatmap函數內部用hclustfun 進行聚類)

ggplot2

  • 數據處理成矩陣形式,給行名列名
  • hclust聚類,改變矩陣行列順序為聚類后的順序
  • melt數據,處理成ggplot2能夠直接處理的數據結構,並加上列名
  • ggplot_tile進行畫圖

gplots

  • 數據處理成矩陣形式,給行名列名
  • 調制顏色並用heatmap.2畫熱圖(heatmap.2函數內部用hclustfun 進行聚類)

R語言代碼

library(pheatmap)
library(data.table)
CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")
dt <- CN_DT[cfDNATime=="cfDNA1"]
wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)
data <- as.matrix(wdt[,2:length(wdt),with=F])  #數據矩陣
rownames(data) <- unlist(wdt[,1]) 

pheatmap(data)

library(ggplot2) 
library(data.table)
CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")
dt <- CN_DT[cfDNATime=="cfDNA1"]
wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)
data <- as.matrix(wdt[,2:length(wdt),with=F])  #數據矩陣
rownames(data) <- unlist(wdt[,1]) 

hc<-hclust(dist(data),method = "average") #對行進行聚類
rowInd<-hc$order #將聚類后行的順序存為rowInd
hc<-hclust(dist(t(data)),method = "average")  #對矩陣進行轉置,對原本的列進行聚類
colInd<-hc$order  #將聚類后列的順序存為colInd
data<-data[rowInd,colInd] #將數據按照聚類結果重排行和列
dp=melt(data)    #對數據進行融合,適應ggplot的數據結構,以進行熱圖的繪制
colnames(dp) <- c("Gene","Sample","Value")
p <- ggplot(dp, aes(Sample,Gene)) + geom_tile(aes(fill = as.factor(Value)))+theme(axis.text.x=element_text(angle = 90))+ guides(fill = guide_legend(title = "Copy Number")) + scale_fill_brewer(palette = 3)
p


library(gplots)
library(data.table)
CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")
dt <- CN_DT[cfDNATime=="cfDNA1"]
wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)
dp <- as.matrix(wdt[,2:length(wdt),with=F])  #數據矩陣

labrow <- unlist(wdt[,1,with=F]) #行名
colorsChoice<- colorRampPalette(c("green","black","red"))  #調制顏色

heatmap.2(dp,labRow = labrow,col=colorsChoice(5),breaks = c(1,1.5,2,2.5,3,4),density.info="histogram",
          hclustfun = function(c)hclust(c,method="average"),keysize = 1.5, cexRow=0.5,trace = "none");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM