2015-02-06 28 views
-1

我生成使用R.
熱圖我用hclust功能,並得到了錯誤的大小: Colv dendrogram doesn't match size of xheatmap.2-錯誤:COLV樹狀圖不符X

下面是我的代碼,它與一個正方形矩陣完美配合。現在我的輸入矩陣是400x2000。有人能告訴我爲什麼我得到這個錯誤嗎?

data <- read.table("mydata.txt",sep="\t",header=TRUE,row.names=1) 
data_matrix <- data.matrix(data) 
library(gplots) 
library("RColorBrewer") 
colors <- colorRampPalette(rev(brewer.pal(9, "Blues")))(255) 
hc_dist= dist(data_matrix) 
hc_clust= hclust(hc_dist) 
hr_dist= dist(t(data_matrix)) 
hr_clust= hclust(hr_dist) 
heatmap.2(data_matrix, col=brewer.pal(11,"RdBu"), labRow=NA, density.info="none", scale="row",trace="none",Colv=as.dendrogram(hc_clust),  Rowv=as.dendrogram(hr_clust)) 

Error in heatmap.2(data_matrix, col = brewer.pal(11, "RdBu"), labRow = NA,:Colv dendrogram doesn't match size of x 
+0

嘗試'COLV =爲.dendrogram(hr_clust),rowv = as.dendrogram(hc_clust)'...(你給出colv中行分類的結果,反之亦然) – Cath 2015-02-06 13:33:39

回答

0

要發展自己的評論:

想象一下這樣的矩陣:

matex<-matrix(1:50,ncol=5) 
colnames(matex)<-paste0("col",1:5) 
rownames(matex)<-paste0("row",1:10) 
head(matex) 
#  col1 col2 col3 col4 col5 
#row1  1 11 21 31 41 
#row2  2 12 22 32 42 
#row3  3 13 23 33 43 
#row4  4 14 24 34 44 
#row5  5 15 25 35 45 
#row6  6 16 26 36 46 

現在,計算距離像你一樣:

hc_dist= dist(matex) # what you think are between columns distances 
hr_dist= dist(t(matex)) # what you think are between rows distances 

並檢查對象hc_disthr_dist

hc_dist 
      # row1  row2  row3  row4  row5  row6  row7  row8  row9 
# row2 2.236068                     
# row3 4.472136 2.236068                  
# row4 6.708204 4.472136 2.236068                
# row5 8.944272 6.708204 4.472136 2.236068             
# row6 11.180340 8.944272 6.708204 4.472136 2.236068           
# row7 13.416408 11.180340 8.944272 6.708204 4.472136 2.236068        
# row8 15.652476 13.416408 11.180340 8.944272 6.708204 4.472136 2.236068      
# row9 17.888544 15.652476 13.416408 11.180340 8.944272 6.708204 4.472136 2.236068   
# row10 20.124612 17.888544 15.652476 13.416408 11.180340 8.944272 6.708204 4.472136 2.236068 

hr_dist 
      # col1  col2  col3  col4 
# col2 31.62278        
# col3 63.24555 31.62278      
# col4 94.86833 63.24555 31.62278   
# col5 126.49111 94.86833 63.24555 31.62278 

因此,實際上,hc_dist包含行距離和列距離之間hr_dist,因此錯誤(你不爲方陣得到的行數和列是相同的)之間

+0

完美。現在它工作正常。非常感謝! – Rtut 2015-02-06 14:44:45

+0

@Rtut,沒問題,很高興幫助:-) – Cath 2015-02-06 14:49:30