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 caloreFirst heatmapMa 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?mirrored heatmap

È stato utile?

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:

R - Immagine di una matrice pixel?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top