Как раскрасить метки дендограммы с помощью dendextend и heatmap.2 с использованием предварительно определенных групп образцов

heatmap.2 назначает меткам неправильные цвета при использовании аргумента colRow. Есть ли альтернативный способ присвоения цвета меткам на тепловой карте.2? Или я что-то не так делаю? (примеры основаны на примерах из метки и дендрограммы цветных листьев и Как раскрасить ветки и отметить метки на тепловой карте. ?)

library(dendextend)
library(gplots)

#make dataset
sample = data.frame(matrix(floor(abs(rnorm(20000)*100)),ncol=1000))
groupCodes <- c(rep("Cont",5), rep("Tre1",5), rep("Tre2",5), rep("Tre3",5))
rownames(sample) <- make.unique(groupCodes)
colorCodes <- c(Cont="red", Tre1="green", Tre2="blue", Tre3="yellow")

#calculate distances, cluster
distSamples <- dist(sample)
hc <- hclust(distSamples)
dend <- as.dendrogram(hc)

# Assign the labels of dendrogram object with new colors:
labels_colors(dend) <- colorCodes[groupCodes][order.dendrogram(dend)]
col_labels<-labels_colors(dend)

# plot dendrogram
plot(dend,main ="colors of labels OK")

# plot dendogram and heatmap with heatmap.2
sample.datamatrix<-data.matrix(sample)
heatmap.2(sample.datamatrix, scale="row", 
          trace="none", 
          dendrogram="row",
          colRow = col_labels, # to add colored labels
          Rowv = dend, 
          main="colors of labels mixed-up",
          labCol = FALSE) # hide column names (i.e. gene names)

введите описание изображения здесь


person al-ash    schedule 03.07.2018    source источник


Ответы (1)


ash, вам нужно сохранить col_labels в исходном порядке данных.

Вот измененный код: (найдите комментарий «ЧТО Я ИЗМЕНИЛ»)

library(dendextend)
library(gplots)

#make dataset
sample = data.frame(matrix(floor(abs(rnorm(20000)*100)),ncol=1000))
groupCodes <- c(rep("Cont",5), rep("Tre1",5), rep("Tre2",5), rep("Tre3",5))
rownames(sample) <- make.unique(groupCodes)
colorCodes <- c(Cont="red", Tre1="green", Tre2="blue", Tre3="yellow")

#calculate distances, cluster
distSamples <- dist(sample)
hc <- hclust(distSamples)
dend <- as.dendrogram(hc)

# Assign the labels of dendrogram object with new colors:
labels_colors(dend) <- colorCodes[groupCodes][order.dendrogram(dend)]
col_labels<-labels_colors(dend)

# plot dendrogram
plot(dend,main ="colors of labels OK")

# <================= WHAT I CHANGED ===================>
# The labels need to be in the order of the original data:
col_labels <- colorCodes[groupCodes]
# </================= WHAT I CHANGED ===================>

# plot dendogram and heatmap with heatmap.2
sample.datamatrix<-data.matrix(sample)
heatmap.2(sample.datamatrix, scale="row", 
          trace="none", 
          dendrogram="row",
          colRow = col_labels, # to add colored labels
          Rowv = dend, 
          main="colors of labels mixed-up",
          labCol = FALSE) # hide column names (i.e. gene names)

введите описание изображения здесь

person Tal Galili    schedule 05.07.2018