根据hcharter中给定的序列设置热图颜色范围

Har*_*vey 4 r heatmap r-highcharter

在这里,我想创建使用热图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")))
Run Code Online (Sandbox Code Playgroud)

对于-5 to +7.5
-5到-1 之间的数据范围应该显示粉红色渐变颜色
-1到+1应该显示白色
+1到7.5应该显示紫色渐变颜色

使用hcharter的热图样本图

Dar*_*sai 5

参数stopsin hc_colorAxis()需要一个列表,该列表将最小值定义为0,最大值定义为1.您可以在0~1范围内设置一个数字来表示某个值的位置并设置其颜色.

找到零所在的位置

FOO +酒吧

p <- (0 - min(heatmap_matrix)) / (max(heatmap_matrix) - min(heatmap_matrix))
Run Code Online (Sandbox Code Playgroud)

设置自定义列表

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)
Run Code Online (Sandbox Code Playgroud)

控制参数

hchart(heatmap_matrix) %>%  
  hc_colorAxis(stops = stops, startOnTick = F, endOnTick = F)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述