R: Asse Y Mirror da una trama
Domanda
Ho questo problema. Ho una mappa di calore, (ma suppongo che questo vale per ogni trama) ma ho bisogno di rispecchiare il mio asse Y.
Ho ottenuto qui un codice di esempio:
library(gstat)
x <- seq(1,50,length=50)
y <- seq(1,50,length=50)
z <- rnorm(1000)
df <- data.frame(x=x,y=y,z=z)
image(df,col=heat.colors(256))
Questo genererà la seguente mappa di caloreMa ho bisogno dell'asse Y Mirroving. A partire da 0 in alto e 50 in fondo. Qualcuno ha idea di cosa devo fare per cambiare questo?
Soluzione
Vedi la pagina della guida per? Plot.default, che specifica
XLIM: The X Limits (x1, x2) della trama. Si noti che "x1> x2" è consentito e porta a un "asse invertito".
library(gstat)
x <- seq(1,50,length=50)
y <- seq(1,50,length=50)
z <- rnorm(1000)
df <- data.frame(x=x,y=y,z=z)
Così
image(df,col=heat.colors(256), ylim = rev(range(y)))
Altri suggerimenti
Funziona per te (è un po 'un hack, però)?
df2<-df
df2$y<-50-df2$y #reverse oredr
image(df2,col=heat.colors(256),yaxt="n") #avoid y axis
axis(2, at=c(0,10,20,30,40,50), labels=c(50,40,30,20,10,0)) #draw y axis manually
La funzione di revaxis nel pacchetto Plotrix "inverte il senso di uno o entrambi gli assi" x "e" y ". Non risolve il problema (la soluzione di Nick è quella corretta) ma può essere utile quando è necessario tracciare un diagramma a dispersione con assi invertiti.
io userei rev
così:
df <- data.frame(x=x,y=rev(y),z=z)
Nel caso in cui non lo fossi a conoscenza, nota che df
è in realtà una funzione. Potresti voler stare attento quando sovrascrivi. Se tu rm(df)
, le cose torneranno alla normalità.
Non dimenticare di rilanciare l'asse Y come suggerisce Nick.
Per l'asse verticale che aumenta nella direzione verso il basso, ho fornito due modi (due risposte diverse) per la seguente domanda: