r - 将因子映射到 heatmap.2 中的颜色

标签 r heatmap

您好,我正在使用 heatmap.2 在 R 中制作热图.我想使用 RowSideColors 选项。但是,我不知道如何轻松地为行创建颜色向量。
行代表细菌,我有一个数据框,其中包含我想用于着色的细菌信息。我要么使用 Bact_Phylo_Info$Phylum或 k 创建颜色向量。

> str(Bact_Phylo_Info)
'data.frame':   33 obs. of  3 variables:
 $ Phylum: Factor w/ 7 levels "Actinobacteria",..: 4 3 3 2 2 2 2 2 5 5 ...
 $ Order : Factor w/ 10 levels "Bacteroidales",..: NA 4 4 1 1 1 1 1 NA 5 ...
 $ Family: Factor w/ 13 levels "Anaplasmataceae",..: NA 4 4 NA 11 2 11 12 NA NA ...

我尝试了一些东西,例如下面的疯狂循环,但我认为一定有一种简单的方法是我遗漏的。任何帮助表示赞赏。
BactPhyColors <- sapply(Bact_Phylo_Info$Phylum,
    if (Bact_Phylo_Info$Phylum == levels(Bact_Phylo_Info$Phylum)[i]),
        rainbow(length(levels(Bact_Phylo_Info$Phylum)))[i]
}
)

最佳答案

如果我很好地理解您尝试做的事情:您有一个编码为因子的变量,并且您尝试将其转换为颜色?
正在创建一些离散的比例颜色吗?

我在这里使用 brewer_pal来自 scales要创建的包以创建啤酒调色板。然后将其与因子变量合并。

library(scales)
dat <- data.frame(Phylum = gl(7,2))
n <- nlevels(dat$Phylum)
dat.col <- data.frame(Phylum =unique(dat$Phylum),
            BactPhyColors =brewer_pal()(n))  ## you can also use rainbow(n)

merge(dat,dat.col)

merge(dat,dat.col)
   Phylum     BactPhyColors
1       1 #EFF3FF
2       1 #EFF3FF
3       2 #C6DBEF
4       2 #C6DBEF
5       3 #9ECAE1
6       3 #9ECAE1
7       4 #6BAED6
8       4 #6BAED6
9       5 #4292C6
10      5 #4292C6
11      6 #2171B5
12      6 #2171B5
13      7 #084594
14      7 #084594

关于r - 将因子映射到 heatmap.2 中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015474/

相关文章:

r - 如何计算逻辑向量中的行数

r - 从R中的文件夹中的所有文件中提取两个单词之间的文本

r - 如何使用 walk 以 purrr 静默绘制 ggplot2 输出

reactjs - 将 React SPA 与 hotjar 热图跟踪集成

r - 如何在 r 中传播或转换多个值

java - libjvm.so : cannot open shared object file: No such file or directory

python - 如何在不添加 "ticks"的情况下从下到上移动标签

mapbox - 带 Mapbox 的恒定热图

google-maps - 具有大数据的地理热图(google)

python - 如何用Python绘制时间序列热图?