R - 将一列添加到与其独立的热图中,以直观地查看分组和响应变量之间的相关性

问题描述 投票:0回答:1

我有一个 800 行和 30 列的大型数据框和一个长度为 800 的响应向量。我正在尝试创建一个热图,我想在其中并排显示热图和列,但是独立着色(响应变量的比例非常不同,因此我不想对两者使用相同的着色方案)。 目前我的热图看起来像这样(垂直线是作为我分析的一部分添加的,它们不是热图的一部分)。

enter image description here

但是我这里有一个小规模的可重现的例子:

mydf <- as.matrix(data.frame(A = sample(10, 20, replace = T), 
                             B = sample(10, 20, replace = T),
                             C = sample(10, 20, replace = T),
                             D = sample(10, 20, replace = T),
                             E = sample(10, 20, replace = T)))

response <- sample(100, 20, replace = T)
mydf_order <- hclust(dist(mydf))$order
heatmap(mydf[mydf_order,], Rowv = NA, Colv = NA, labRow = as.character(mydf_order))

我能够生成分层聚类

mydf
的热图,但还想在其旁边显示
response
列并使用独立的着色方案,以便我可以查看
mydf
中的分组是否对应于
response

谢谢你

r visualization data-analysis heatmap
1个回答
0
投票

一种方法是将响应变量映射到颜色渐变,例如。 g。使用 {scales} 包:


    library(scales)
    
    response_colors <- colour_ramp(c("blue", "red"))(response / max(response))
    
    ## > head(response_colors)
    ## [1] "#FA001C" "#D2007B" "#DF0062" "#AF00AD" "#E40058" "#4F00F2"

然后,将它们用于

RowSideColors
参数(确保顺序与重新排序的
mydf
的顺序相对应:


    heatmap(mydf[mydf_order,], 
            Rowv = NA,
            Colv = NA, 
            labRow = as.character(mydf_order),
            RowSideColors = response_colors
    )

结果:

heatmap with separate color scale for independent response

© www.soinside.com 2019 - 2024. All rights reserved.