热图和树状图中的彩色边条

时间:2015-12-30 07:04:28

标签: r colors heatmap dendextend

我正在尝试将颜色侧栏添加到热图列中。

我的病例/样本属于不同的组/类(例如,样品是许多基因在各种细胞中表达的结果,并且组是不同的种类)。

我希望颜色侧栏反映不同的物种。该列已根据单元格的类型进行标记。我知道我可以逐个为不同的物种分配不同的颜色(使用if和else),但是有超过20种和200多个样本,这是不切实际的。同样,按组对数据进行排序并将不同的颜色分配给例如,这是不切实际的。样品1至10,11至25等......

我发现as.character(as.numeric(data[,XXX]),其中XXX是我的群组名称的列。然而它提供了令人震惊的颜色。任何建议如何申请,例如从彩虹色到它的几个色调?

来自heatmap.2的colCol似乎是合适的,但在使用时它会忽略相同的类/组并分配例如所有样本的颜色调色板......

除此之外,我想知道在绘制树形图时如何做同样的事情。它似乎更复杂...... 将不胜感激任何帮助!

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你可以尝试这样的事情:

library(gplots)
library(dendextend)

# sample data
x  <- as.matrix(mtcars)

# determine colors & palettes
colClusters <- as.integer(nchar(names(mtcars)) == 2)+1L
rowClusters <- as.integer(factor(substr(rownames(x), 1, 1)))
colCols <- rainbow(2)
rowCols <- rainbow(10)

# create dendrograms
colDend <- x %>% t %>% dist %>% hclust %>% as.dendrogram 
rowDend <- x %>% dist %>% hclust %>% as.dendrogram 

# plot heatmap
heatmap.2(x, 
          Colv = colDend %>% color_branches(col=colCols[colClusters[order.dendrogram(colDend)]]), 
          Rowv = rowDend %>% color_branches(col=rowCols[rowClusters[order.dendrogram(rowDend)]]),
          colCol = colCols[colClusters], 
          colRow = rowCols[rowClusters])   

enter image description here