2011-02-22 134 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

我认为这两个数字都应该来自两个数字组合。左边是热图,右边是基于聚类结果的颜色。当然,数据应该按照簇的结果进行重新排序。顺便说一句,这个问题与这个问题下面评论的两个问题不相似。