2013-07-09 19 views
5

Naprawdę podoba mi się, jak pakiet pheatmap tworzy bardzo ładne wygląd mapy ciepła w R. Jednak próbuję dodać etykiety osi X i Y do wyjścia (jeśli jeden był tylko na działce(), należy użyć: xlab = "stuff"). Prosty przykład jest następujący.x Oś i oś osi etykiety w pheatmap w R

require(pheatmap) 

## Generate some data 
d <- matrix(rnorm(25), 5, 5) 
colnames(d) = paste("bip", 1:5, sep = "") 
rownames(d) = paste("blob", 1:5, sep = "") 

## Create the heatmap: 
pheatmap(d) 

Powyższe daje następującą mapę cieplną:

Example of the above

nie mogę dla życia mnie dowiedzieć się, jak dodać „xlab” lub „” ylab do tej działki. Myśli?

+0

Dziwne, nie widzę rozwiązania. Próbowałem również utworzyć wielobajtową fabułę ... Nie można również dodać tekstu na wykresie. O ile mi wiadomo, możesz po prostu użyć opcji głównej jako "fałszywego xlab". – FraNut

Odpowiedz

4

Głównym problemem jest to, że pheatmap, który używa pakietu grid, tworzy nową stronę siatki za każdym razem, gdy zostanie wywołana. Rozwiązanie znalazłem to:

library(pheatmap) 
library(grid) 

## Generate some data 
d <- matrix(rnorm(25), 5, 5) 
colnames(d) = paste("bip", 1:5, sep = "") 
rownames(d) = paste("blob", 1:5, sep = "") 

## Create the heatmap: 
setHook("grid.newpage", function() pushViewport(viewport(x=1,y=1,width=0.9, height=0.9, name="vp", just=c("right","top"))), action="prepend") 
pheatmap(d) 
setHook("grid.newpage", NULL, "replace") 
grid.text("xlabel example", y=-0.07, gp=gpar(fontsize=16)) 
grid.text("ylabel example", x=-0.07, rot=90, gp=gpar(fontsize=16)) 

enter image description here

+1

Każdy pomysł, jak uzyskać etykietę y po prawej stronie działki? –

+0

Zmień wartość dla x w "grid.text" ("przykład ylabel", x = -0.07, rot = 90, gp = gpar (fontsize = 16)) ' – DonJ