2015-12-30 67 views
1

我想將顏色邊欄添加到熱圖貼圖欄。我的病例/樣本屬於不同的組/類別(例如,樣本是各種細胞中的許多基因表達的結果,並且組是不同的物種)。熱圖和樹狀圖中的顏色邊欄

我想顏色側欄反映不同的物種。該列已由單元格的類型標記。我知道我可以將不同的顏色分配給不同的物種(使用if和else),但有超過20個物種和200多個樣品,這是不實際的。同樣,按組排序數據並將不同的顏色分配給例如樣本1至10,11至25等...

我發現as.character(as.numeric(data[,XXX]),其中XXX是與我的組名稱工作正常的列。然而,它提供了令人震驚的顏色。任何建議如何應用只是從彩虹色到它的幾個色調?

來自heatmap.2的colCol似乎是合適的,但是在使用時忽略相同的類/組並分配例如所有樣品的顏色調色板...

除了上述我想知道如何做只是樹狀圖繪製相同。它似乎更復雜... 將感謝任何幫助!

回答

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

+0

真棒!謝謝!!!不幸的是我意識到應用調色板顏色(例如彩虹)並不是最好的選擇。我將自己的顏色分配給組/班級。但無法弄清顏色應用於行的順序。我認爲如果我有例如5個因素,我將定義colCols <-c(「藍色」,「紅色」,黑色「,棕色」,「綠色」),藍色將應用於第一個因子/類/組等等。第一個/第一個在哪裏...在樹狀圖(熱圖的右側第一行),在數據矩陣(即第一行)中? – AussieAndy

+0

除上述之外,似乎顏色分配是隨機的,例如第一colCols中的顏色名稱未分配給數據集中的第一個組,也沒有第一個分組聚集在樹狀圖(最左側的分支)中。 – AussieAndy

+0

OK ...我計算出了... ...直覺(嘆氣)...謝謝你lukeA !!!! – AussieAndy