我在 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"
最后,我们可以用第一个A
定义的颜色表示,也可以用表示:A2
pheatmap
image
pheatmap(t(A[,5:1]),cluster_rows = F, cluster_cols = F)
image(A, col=A2)