У меня есть корреляционная тепловая карта, полученная в plotly
. Шкала масштабов изменяется от -1 до 1. По мере усиления корреляции плитки окрашиваются в темно-красный цвет. Поскольку корреляция становится отрицательно сильнее, плитки окрашиваются в темно-синий цвет. Мне нужно, чтобы нулевые значения были окрашены в белый цвет. Тем не менее, цветовая шкала просто выбирает цвет ноль на основе распределения набора данных. Как я могу заставить нулевые значения быть белыми и в середине цветовой шкалы? Я попытался использовать этот ответ , но не могу заставить его работать для этой тепловой карты. Пожалуйста, помогите, я схожу с ума!
library(plotly)
library(magrittr)
# compute a correlation matrix
correlation <- round(cor(mtcars), 3)
nms <- names(mtcars)
colorlength <- 100
null_value <- (0 - min(correlation)) / (max(correlation) - min(correlation))
border <- as.integer(null_value * colorlength)
colorscale <- as.list(1:colorlength)
#colorscale below zero
s <- scales::seq_gradient_pal("blue", "white", "Lab")(seq(0,1,length.out=border))
for (i in 1:border) {
colorscale[[i]] <- c((i - 1) / colorlength, s[i])
}
#colorscale above zero
s <- scales::seq_gradient_pal("white", "red", "Lab")(seq(0,1,length.out=colorlength - border))
for (i in 1:(colorlength - border)) {
colorscale[[i + border]] <- c((i + border) / colorlength, s[i])
}
plot_ly(x = nms, y = nms, z = correlation,
key = correlation, type = "heatmap", source = "heatplot",color = ~correlation,
colorscale = colorscale,
colorbar = list(len=1)) %>%
layout(xaxis = list(title = ""),
yaxis = list(title = ""))