2011-02-22 424 views
5

我想用kmeans聚類矩陣,並能夠將其繪製爲熱圖。這聽起來很瑣碎,我看過很多這樣的情節。我嘗試過google,但是找不到方法。R繪製kmeans與熱圖聚類

我希望能夠在此圖上繪製類似面板A或B的內容。 假設我有一個250行5列的矩陣。我不想聚集列,只是行。

m = matrix(rnorm(25), 250, 5) 

km = kmeans(m, 10) 

那麼我該如何繪製這10個集羣作爲熱圖?您的意見和幫助不僅僅是歡迎。

謝謝。

enter image description here

+1

這個問題是類似於這個(http://stackoverflow.com/q/5687891/597069),它有很好的答案。 – tflutre 2011-11-03 23:04:33

+0

看看[這個問題](http://stackoverflow.com/q/6673162/707145) – MYaseen208 2012-07-02 23:34:00

回答

6

類似下面應該工作:

set.seed(100) 
m = matrix(rnorm(10), 100, 5) 
km = kmeans(m, 10) 
m2 <- cbind(m,km$cluster) 
o <- order(m2[, 6]) 
m2 <- m2[o, ] 
library(pheatmap) # I like esoteric packages! 
library(RColorBrewer) 
pheatmap(m2[,1:5], cluster_rows=F,cluster_cols=F, col=brewer.pal(10,"Set3"),border_color=NA) 

heatmap created using the pheatmap pacakge

+0

感謝Paolo的回覆。但是我有點困惑,爲什麼我們要放鬆情節中的5列? – 2011-02-23 14:07:51

+0

我們不是!嘗試:pheatmap(m2 [,1:5],cluster_rows = F,cluster_cols = F,col = brewer.pal(10,「Set3」)) – Paolo 2011-02-23 14:26:01

0

我認爲這兩個數字都應該來自兩個數字組合。左邊是熱圖,右邊是基於聚類結果的顏色。當然,數據應該按照簇的結果進行重新排序。順便說一句,這個問題與這個問題下面評論的兩個問題不相似。