我正在尝试将颜色侧栏添加到热图列中。
我的病例/样本属于不同的组/类(例如,样品是许多基因在各种细胞中表达的结果,并且组是不同的种类)。
我希望颜色侧栏反映不同的物种。该列已根据单元格的类型进行标记。我知道我可以逐个为不同的物种分配不同的颜色(使用if和else),但是有超过20种和200多个样本,这是不切实际的。同样,按组对数据进行排序并将不同的颜色分配给例如,这是不切实际的。样品1至10,11至25等......
我发现as.character(as.numeric(data[,XXX])
,其中XXX
是我的群组名称的列。然而它提供了令人震惊的颜色。任何建议如何申请,例如从彩虹色到它的几个色调?
来自heatmap.2
的colCol似乎是合适的,但在使用时它会忽略相同的类/组并分配例如所有样本的颜色调色板......
除此之外,我想知道在绘制树形图时如何做同样的事情。它似乎更复杂...... 将不胜感激任何帮助!
答案 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])