【问题标题】:Mapping factors to colors in heatmap.2将因子映射到 heatmap.2 中的颜色
【发布时间】:2013-08-02 11:12:28
【问题描述】:

您好,我正在使用 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]
}
)

【问题讨论】:

    标签: r heatmap


    【解决方案1】:

    如果我很好地理解了您尝试做的事情:您将一个变量编码为一个因素,然后您尝试将其转换为颜色? 正在创建一些离散的刻度颜色吗?

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多