2011-09-02 15 views

Respuesta

9

En la función heatmap, las posiciones de los ejes están codificadas. Pero sería muy fácil cambiar solo un número para posicionarlo en el otro lado. Escriba "heatmap" en su consola y cambie el primer argumento de un 4 a un 2 en la segunda llamada axis().

Lo único que cambió fue:

axis(2, iy, labels = labRow, las = 2, line = -0.5, tick = 0, # the 2 used to be 4 
     cex.axis = cexRow) 

Hay todavía tienen que ser los cambios en los márgenes para acomodar el interruptor. El cambio del valor actual de 0 a 5 parecía crear un espacio adecuado en el ejemplo que estaba jugando con desde la página de ayuda:

... 
par(mar = c(margins[1L], 5, 0, margins[2L])) 

Esta fue mi caso de prueba:

x <- as.matrix(mtcars) 
rc <- rainbow(nrow(x), start=0, end=.3) 
cc <- rainbow(ncol(x), start=0, end=.3) 
utils::str(hv) # the two re-ordering index vectors 

## no dendrogram (nor color strip) 
heatmap.new(x, Colv = NA, Rowv=NA, col = cm.colors(256), scale="column", 
     margins=c(5,2), 
     xlab = "specification variables", ylab= "Car Models", 
     main = "heatmap(<Mtcars data>, ..., scale = \"column\")") 
+0

nota: Noté que el ' side = 'arguments y los cambió también. Mismo resultado, sin etiquetas de ejes. ¿Podría ser esto un problema con los 'márgenes'? El mapa de calor parece estar abarrotado en la esquina superior izquierda de la imagen. Voy a seguir jugando. Creo que estamos en el camino correcto aquí. ¡Gracias! – James

+0

No estoy seguro de por qué usaste 3. Esa sería la parte superior. Es posible que deba ser más completo al decir lo que hizo. Mi respuesta asumió que usted sabía cómo crear una nueva función a partir del código de una existente. Obtengo un interruptor de lados, aunque todavía necesitarías ajustar los márgenes con par(). –

+0

Utilicé 3 para el eje xy 2 para el eje y porque los quería en la parte superior e izquierda, respectivamente. – James

Cuestiones relacionadas