R рисовать kmeans кластеризацию с тепловой картой - PullRequest
5 голосов
/ 23 февраля 2011

Я хотел бы сгруппировать матрицу с помощью kmeans и уметь отображать ее как тепловую карту.Это звучит довольно банально, и я видел много таких сюжетов.Я попытался погуглить вокруг, но не могу найти способ обойти это.

Я бы хотел нарисовать что-то вроде панели A или B на этом рисунке.Допустим, у меня есть матрица с 250 строками и 5 столбцами.Я не хочу кластеризовать столбцы, только строки.

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

km = kmeans(m, 10)

Тогда как мне построить эти 10 кластеров как тепловую карту?Ваши комментарии и помощь приветствуются.

Спасибо.

enter image description here

Ответы [ 2 ]

6 голосов
/ 23 февраля 2011

Должно работать что-то вроде следующего:

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 голосов
/ 20 сентября 2014

Я думаю, что обе эти цифры должны состоять из двух цифр вместе взятых. левая - это тепловая карта, а правая окрашена на основе результатов кластера. Конечно, данные должны быть переупорядочены по результату кластера. Кстати, вопрос не похож на два вопроса, как прокомментировано ниже вопроса.

...