2012-09-21 8 views
9

Sto provando a raggruppare un set di dati di interazione con DNA di proteine ​​e tracciare una heatmap usando heatmap.2 dai pacchetti di pacchetti R. Ecco il processo completo che sto seguendo per generare questi grafici: Generare una matrice di distanza utilizzando una correlazione nel mio caso pearson.Come ottenere i cluster per allineare sulla diagonale usando heatmap.2 in r?

library(RColorBrewer); 
library(gplots); 
args <- commandArgs(TRUE); 
matrix_a <- read.table(args[1], sep='\t', header=T, row.names=1); 
mtscaled <- as.matrix(scale(matrix_a)) 
pdf("result.pdf", pointsize = 15, width = 18, height = 18) 
result <- heatmap.2(mtscaled, Colv=T,Rowv=T, scale='none',symm = T, col = brewer.pal(9,"Reds")) 
dev.off() 

sono in grado di compire questo con la funzione heatmap normale effettuando le seguenti operazioni:

result <- heatmap(mtscaled, Colv=T,Rowv=T, scale='none',symm = T) 

Tuttavia quando uso le stesse impostazioni per Heatmap.2 i cluster non si allineano così sulla diagonale. Ho allegato 2 immagini la prima immagine usa heatmap e la seconda immagine usa heatmap.2. Ho usato il colore Reds dal pacchetto RColorBrewer per aiutare a mostrare meglio quello che sto facendo. Normalmente userei solo la funzione heatmap di default, ma ho bisogno della variazione di colore fornita da heatmap.2.

Ecco un elenco per il set di dati utilizzato per generare le mappe termiche, dopo che è stato trasformato in una matrice distanza: DataSet

Heatmap drawn from heatmap

Heatmap drawn from Heatmap.2

risposta

4

È come se due degli argomenti sono in conflitto. Colv=T dice di ordinare le colonne per cluster e symm=T dice di ordinare le colonne allo stesso modo delle righe. Ovviamente, entrambi i vincoli potrebbero essere soddisfatti poiché i dati sono simmetrici, ma invece lo Colv=T vince e si ottengono due ordini di cluster indipendenti che possono essere diversi.

Se si rinuncia per avere copia ridondante del dendrogramma, il seguente riporta la mappa termica che si desidera, almeno:

result <- heatmap.2(mtscaled, Rowv=T, scale='none', dendrogram="row", symm = T, col = brewer.pal(9,"Reds")) 

symmetrical heatmap

+2

Hi @Xan ringraziamento mi è stato effettivamente in grado di farlo con questo risultato <- heatmap.2 (mtscaled, dendrogram = "col", scale = 'none', symm = T, col = bluered (16), breaks = my.breaks) Accetto la tua risposta però e +1 perché era diverso da quello che avevo :-) – Alos