2

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

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

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

谢谢,艾伦

4

1 回答 1

2

要了解它是如何工作的,我必须查看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"

最后,我们可以用第一个A定义的颜色表示,也可以用表示:A2pheatmapimage

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

带pheatmap

image(A, col=A2)

有图

参考:Kolde, R. (2013)。pheatmap:漂亮的热图。

于 2015-01-07T14:28:24.100 回答