主要步驟
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");