У меня проблема, может быть ошибка в heatmaply или plotly. Цвета на боковой панели тепловой карты не отображают цвета, которые я указал. См. Пример кода ниже. В конце кода в части # 6) первый график, построенный с использованием функции plot (простой график, показывающий цвета), правильно отображает цвета (желтый и синий):
Второй график, использующий эти цвета в боковой панели карты высокой температуры (боковая панель высокой температуры с неправильным цветом):
не отображает их правильно и вместо них отображается случайный цвет. На аналогичном графике с реальными данными на боковой панели присутствуют даже красные и оранжевые цвета (на боковой панели Heatmaply отображается красный и оранжевый цвета, а цветовой диапазон - сине-желтый):
в то время как все коды генерируются с использованием синей и желтой цветовой гаммы. Любые идеи, что может вызвать эту ошибку и как отображать цвета в боковой панели в соответствии с их цветовой кодекс а?
Сравнение копенетического сходства между листьями в двух деревьях на основе полных данных и подвыборки данных
# 1 ) Generate random data to build trees
set.seed(2015-04-26)
dat <- matrix(rnorm(100), 10, 50) # Dataframe with 50 columns
datSubSample <- dat[, sample(ncol(dat), 30)] #Dataframe with 30 columns sampled from the dataframe with 50
dat_dist1 <- dist(datSubSample)
dat_dist2 <- dist(dat)
hc1 <- hclust(dat_dist1)
hc2 <- hclust(dat_dist2)
# 2) Build two dendrograms, one based on all data, second based a sample of the data (30 out of 50 columns)
dendrogram1 <- as.dendrogram(hc1)
dendrogram2 <- as.dendrogram(hc2)
# 3) For each leave in a tree get cophenetic distance matrix,
# each column represent distance of that leave to all others in the same tree
cophDistanceMatrix1 <- as.data.frame(as.matrix(cophenetic(dendrogram1)))
cophDistanceMatrix2 <- as.data.frame(as.matrix(cophenetic(dendrogram2)))
# 4) Calculate correlation between cophenetic distance of a leave to all other leaves, between two trees
corPerLeave <- NULL # Vector to store correlations for each leave in two trees
for (leave in colnames(cophDistanceMatrix1)){
cor <- cor(cophDistanceMatrix2[leave], cophDistanceMatrix1[leave])
corPerLeave <- c(corPerLeave, unname(cor))
}
# 5) Convert cophenetic correlation to color to show in side bar of a heatmap
corPerLeave <- corPerLeave / max(corPerLeave) #Scale 0 to 1 correlation
byPal <- colorRampPalette(c('yellow', 'blue')) #blue yellow color palette, low correlation = yellow
colCopheneticCor <- byPal(20)[as.numeric(cut(corPerLeave, breaks =20))]
# 6) Plot heatmap with dendrogram with side bar that shows cophenetic correlation for each leave
row_dend <- dendrogram2
x <- as.matrix(dat_dist2)
#### Plot belows use the same color code, normal plot works, however heatmaply shows wrong colors
plot(x = 1:length(colCopheneticCor), y = 1:length(colCopheneticCor), col = colCopheneticCor)
heatmaply(x, colD = row_dend, row_side_colors = colCopheneticCor)