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