2012-09-21 12 views
9

Próbuję zgrupować zbiór danych interakcji białek dna i narysować mapę cieplną za pomocą mapy ciepła 2 z gromotek pakietu R. Oto pełny proces, który śledzę, aby wygenerować te wykresy: Wygeneruj macierz odległości za pomocą pewnej korelacji w moim przypadku typu pearson.Jak uzyskać klastry do wyrównania na przekątnej za pomocą 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() 

jestem w stanie acomplish to z prawidłową czynnością termiczna, wykonując następujące czynności:

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

Jednak kiedy użyć tych samych ustawień dla Heatmap.2 klastry nie w kolejce, jak również po przekątnej. Dołączyłem 2 obrazy, pierwsze zdjęcie wykorzystuje mapę termiczną, a drugie zdjęcie wykorzystuje mapę termiczną.2. Użyłem koloru Reds z pakietu RColorBrewer, aby lepiej pokazać, co robię. Normalnie używałbym tylko domyślnej funkcji mapy cieplnej, ale potrzebuję zmiany koloru, którą zapewnia mapa termiczna.2.

Oto lista do zbioru danych używany do generowania Strefy, po to został przekształcony w matrycy dystans: DataSet

Heatmap drawn from heatmap

Heatmap drawn from Heatmap.2

Odpowiedz

4

To jakby dwa argumenty są sprzeczne. Colv=T mówi, aby zamówić kolumny według klastra, a symm=T mówi, aby zamówić kolumny tak samo jak wiersze. Oczywiście oba ograniczenia mogą zostać spełnione, ponieważ dane są symetryczne, ale zamiast tego wygrywa Colv=T i otrzymujesz dwa niezależne porządki klastrów, które są inne.

Jeśli zrezygnować posiadające nadmiarowe kopie dendrogramie dodaje daje mapę cieplną chcesz co najmniej:

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

symmetrical heatmap

+2

Hi @Xan dziękuję I był rzeczywiście w stanie to zrobić z tym wynikiem: <- mapa termiczna 2 (mtscaled, dendrogram = "col", skala = "brak", symm = T, col = bluered (16), breaks = my.breaks) Akceptuję twoją odpowiedź i +1 ponieważ różniło się od tego, co miałem :-) – Alos