R - 提取 (p) 热图颜色以用于多边形填充

R - Extract (p)heatmap colors to use in polygon fill

我在 R 中创建了一个大小为 n*k 的热图,是否可以提取用于第 i 个元素的单独颜色?

例如 n=3(列)和 k=50(行),n 是任意严重级别,k 代表英国的一个地区。

我有这些地区的多边形,我想根据严重程度创建 3 个单独的地图,使用整体热图中相同的颜色作为多边形的填充以保持一致性。

谢谢, 艾伦

要了解其工作原理,我必须查看 pheatmap 的代码。 让我们先生成一个矩阵:

A <- matrix(1:10, 2, 5)

默认调色板定义为

pal <- colorRampPalette(rev(RColorBrewer::brewer.pal(n = 7, name = "RdYlBu")))(100)

然后我们的想法是定义中断值并为中断定义的每个间隔分配颜色:

bks <- pheatmap:::generate_breaks(A, length(pal), center = F)
A2 <- pheatmap:::scale_colours(A, col=pal, breaks=bks)

矩阵 A2 包含与 A 的每个单元格关联的颜色:

A2
#          [,1]      [,2]      [,3]      [,4]      [,5]     
# [1,] "#4575B4" "#ABD0E4" "#F4FBD2" "#FEDF8F" "#EF6D48"
# [2,] "#77A6CE" "#E0F3F7" "#FEF4AF" "#FCA86B" "#D73027"

最后,我们可以先用pheatmapA2中定义的颜色表示A,然后用image:

pheatmap(t(A[,5:1]),cluster_rows = F, cluster_cols = F)

image(A, col=A2)

参考:Kolde, R. (2013). pheatmap: Pretty Heatmaps.