Come si crea una heatmap con le etichette dell'asse Y sulla sinistra? Sembra di default a destra. Devo creare un asse personalizzato usando axis()
?Posiziona l'asse Y sulla sinistra di una mappa termica?
8
A
risposta
9
Nella funzione heatmap
le posizioni degli assi sono hardcoded. Ma sarebbe molto facile cambiare solo un numero per posizionarlo sull'altro lato. Digitare "heatmap" sulla console e modificare il primo argomento da 4 a 2 nella seconda chiamata axis()
.
Tutto quello che ho cambiato è stato:
axis(2, iy, labels = labRow, las = 2, line = -0.5, tick = 0, # the 2 used to be 4
cex.axis = cexRow)
ancora ci devono essere cambiamenti nei margini per ospitare l'interruttore. Cambiare il valore corrente di 0-5 sembrava per creare uno spazio adeguato nell'esempio stavo giocando con dalla pagina di aiuto:
...
par(mar = c(margins[1L], 5, 0, margins[2L]))
Questo il mio banco di prova era:
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\")")
nota: Ho notato che il ' side = 'argomenti e ha cambiato anche quelli. Stesso risultato, nessuna etichetta dell'asse. Questo potrebbe essere un problema con i margini? La mappa termica sembra essere stipata nell'angolo in alto a sinistra dell'immagine. Continuerò a giocare. Penso che siamo sulla strada giusta qui. Grazie! – James
Non sei sicuro del motivo per cui hai usato 3. Questo sarebbe il massimo. Potrebbe essere necessario essere più completo nel dire quello che hai fatto. La mia risposta presupponeva che tu sapessi come creare una nuova funzione dal codice di una esistente. Ottengo un cambio di lati, anche se avresti ancora bisogno di regolare i margini con il par(). –
Ho usato 3 per l'asse x e 2 per l'asse y poiché li volevo rispettivamente in alto e a sinistra. – James