【问题标题】:Extract a matrix of color values from a heatmap or the underlying data从热图或基础数据中提取颜色值矩阵
【发布时间】:2018-01-03 01:39:23
【问题描述】:

这是一个相对权重的矩阵:

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 等)生成热图并尝试从输出中剖析基础数据或重现他们的计算来解决这个问题。但是,我发现这些数据很难访问,我想知道是否有人可以为我提供解决方案来弥补这一差距。 提前谢谢你。

【问题讨论】:

    标签: r graphics colors heatmap


    【解决方案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"
    

    末尾的额外FFs 用于不透明度,可以使用 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"
    

    希望这会有所帮助!

    【讨论】:

    • 完美,正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    相关资源
    最近更新 更多