Настройка цветовой шкалы тепловой карты в соответствии с заданной последовательностью в hcharter - PullRequest
0 голосов
/ 11 января 2019

Здесь я пытаюсь создать тепловую карту, используя highcharter::hcharter(), где меньше -1 должно быть одного цвета (розовый), -1 до 1 должно быть прозрачным или белым color, а больше + 1 должен быть другого цвета (фиолетовый).

В настоящее время я написал код, используя hchart() и использовал color_stops для изменения цветового формата. Но это работает очень хорошо, когда данные центрированы на 0, но когда они не центрированы на 0, скажем, от -5 до + 7.5 , белый / прозрачный цвет будет смещен в 1, как показано на рисунке ниже. ,

a1 <- rnorm(30,0,2)  
a2 <- rnorm(30,0,2)  
a3 <- rnorm(30,0,2)  
a4 <- rnorm(30,0,2)  
a <- cbind(a1,a2,a3,a4)
heatmap_matrix <- as.matrix(a)

library(highcharter) 
hchart(heatmap_matrix) %>%  
  hc_colorAxis(stops = color_stops(n = 3, colors = c("#FF1493", "white", "#800080")))

Для диапазона данных от -5 to +7.5
От -5 до -1 должен отображаться розовый градиент цвета
От -1 до +1 должен отображаться белый цвет
От +1 до 7.5 должен отображаться фиолетовый градиент цвета

Heat Map sample plot using hcharter

1 Ответ

0 голосов
/ 11 января 2019

Для аргумента stops в hc_colorAxis() требуется список, в котором минимальное значение определяется как 0 , а максимальное значение - 1 . Вы можете установить число в пределах 0 ~ 1 для представления положения определенного значения и установить его цвет.

Найти, где находится ноль

foo+bar

p <- (0 - min(heatmap_matrix)) / (max(heatmap_matrix) - min(heatmap_matrix))

Установить пользовательский список

stops <- data.frame(q = c(0, p, 1),
                    c = c("#FF1493", "#FFFFFF", "#800080"),
                    stringsAsFactors = FALSE)
#          q       c
# 1 0.000000 #FF1493
# 2 0.434873 #FFFFFF
# 3 1.000000 #800080

stops <- list_parse2(stops)

Управляющие аргументы

hchart(heatmap_matrix) %>%  
  hc_colorAxis(stops = stops, startOnTick = F, endOnTick = F)

enter image description here

...