2015-10-31 5 views
0

Я хочу провести иерархическую кластеризацию и построение классической дендрограммы с помощью тепловой карты. Это достаточно легко, используя heatmap.2 или heatmap.3 в R, и, по-видимому, разумно легко и в python. Однако то, что я на самом деле не нахожу хорошим решением, - это аннотация дерева.R/Python: Heirarchical clustering, аннотация dendrogram

В идеале, я хотел бы покрасить код своих ветвей в соответствии с метаданными. Скажем, что у меня есть ~ 10k строк из 5 различных типов, после кластеризации я хотел бы визуализировать, как эти типы группируются вместе. Невозможно пометить каждую строку из-за количества данных.

Невозможно покрасить дерево на основе кластера/расстояния, но это не совсем то, что я хочу.

вектор классификации по цвету может быть либо отдельный столбец или часть rownames

решения в R оч Python на самом деле не имеет значения. Спасибо!

Edit:

Пример:

library(gplots) 
library(proxy) 
df = data.frame(matrix(rnorm(100), nrow=10)) 
rownames(df) <- c("A_1","A_2","A_3","B_1","B_2","B_3","C_1","C_2","C_3","C_4") 
df <- t(df) 
distance.matrix.df <- dist(as.matrix(df), method='pearson') 
clust.df1 <- hclust(distance.matrix.df, method = "average") 
dend.dfc <- as.dendrogram(clust.df1) 
heatmap.2(as.matrix(df), Rowv=dend.dfc, keysize=1, dendrogram="col", trace="none") 

Выход: Here

Желаемый результат: Here

+0

Ах, жаль пропустил, что. Работаю над этим. – Myggan

ответ

1

В R вы можете попробовать это так:

library(dendextend) 
dend <- df %>% t %>% dist %>% hclust %>% as.dendrogram %>% 
    branches_attr_by_clusters(as.numeric(as.factor(substr(labels(.), 0, 1))), 
          attr="col") 
heatmap.2(as.matrix(df), Rowv=dend.dfc, Colv=dend, keysize=1, 
      dendrogram="col", trace="none") 

, который дает вам что-то вроде этого:

enter image description here

+0

Спасибо! Кажется, это трюк! Теперь я просто должен понять, специально «df%>% t%>% dist%>% hclust%>% as.dendrogram%>%" для меня немного загадка. – Myggan

+0

@Myggan Это просто создает матрицу расстояний, объект hclust и дендрограмму в одной строке - вы можете больше узнать о операторе трубы '%>%' [здесь] (https://cran.r-project.org/web/packages /magrittr/vignettes/magrittr.html). – lukeA

+0

В дополнение к описанному решению может также работать параметр «ColSideColors» в тепловой карте.2 –

 Смежные вопросы

  • Нет связанных вопросов^_^