Установка диапазона цветов тепловой карты в соответствии с данной последовательностью в hcharter

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

Пример графика тепловой карты с использованием hcharter


person Harvey    schedule 11.01.2019    source источник


Ответы (1)


Аргумент 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)

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

person Darren Tsai    schedule 11.01.2019