从热图或基础数据中提取颜色值矩阵

时间:2017-07-27 10:59:18

标签: r graphics colors heatmap

这是一个相对权重矩阵:

weightmat <- matrix(c(0,3,6,4,0,5,7,2,0), nrow = 3, ncol = 3)

我可以使用多种专用方法生成热图图形,例如来自plotrix的这种方法:

color2D.matplot(weightmat, extremes = c("white", "red"))

一切都很好,但我现在要做的是返回热图中使用的颜色值矩阵,以便我可以使用它们来表示其他图形输出中的权重,例如网络。 基于上面的例子,我所依赖的输出如下所示:

weightcol <- matrix(c("#FFFFFF","#FF9292","#FF2424","#FF6D6D","#FFFFFF","#FF4949","#FF0000", "#FFB6B6", "#FFFFFF"), nrow = 3, ncol = 3)

到目前为止,我一直在通过生成具有各种专用函数(ggplot,plotrix等)的热图并尝试从输出中剖析基础数据,或者重现它们的计算来解决这个问题。但是,我发现这些数据难以访问,并想知道是否有人可以为我提供解决方案来弥补这一差距。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定你是否可以从color2D.matplot对象中提取值,但是从查看documentation开始,似乎使用了color.scale函数。您可以通过以下方式找到您的值:

color.scale(weightmat,extremes=c("white","red"))

结果:

     [,1]        [,2]        [,3]       
[1,] "#FFFFFFFF" "#FF6D6DFF" "#FF0000FF"
[2,] "#FF9292FF" "#FFFFFFFF" "#FFB6B6FF"
[3,] "#FF2424FF" "#FF4949FF" "#FFFFFFFF"

最后的额外FF s用于可以使用alpha参数设置的不透明度。

你可以剥掉那些:

substr(color.scale(weightmat,extremes=c("white","red")),1,7)

结果:

     [,1]      [,2]      [,3]     
[1,] "#FFFFFF" "#FF6D6D" "#FF0000"
[2,] "#FF9292" "#FFFFFF" "#FFB6B6"
[3,] "#FF2424" "#FF4949" "#FFFFFF"

希望这有帮助!

相关问题