R: Mirror Y-eje de una trama
Pregunta
Tengo este problema. Obtuve un mapa de calor (pero supongo que esto se aplica a cada trama) pero necesito reflejar mi eje Y.
Llegué aquí algún código de ejemplo:
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))
Esto generará el siguiente mapa de calorPero necesito el eje Y reflejado. Comenzando con 0 en la parte superior y 50 en la parte inferior. ¿Alguien tiene una pista sobre lo que debo hacer para cambiar esto?
Solución
Vea la página de ayuda para? Plot.default, que especifica
xlim: los límites x (x1, x2) de la trama. Tenga en cuenta que 'x1> x2' está permitido y conduce a un 'eje invertido'.
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)
Asi que
image(df,col=heat.colors(256), ylim = rev(range(y)))
Otros consejos
¿Funciona esto para ti (sin embargo, es un poco hack)?
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 función Revaxis en el paquete Plotrix "invierte el sentido de uno o ambos ejes 'x' e 'y'". No resuelve su problema (la solución de Nick es la correcta) pero puede ser útil cuando necesita trazar un diagrama de dispersión con ejes invertidos.
yo usaría rev
al igual que:
df <- data.frame(x=x,y=rev(y),z=z)
En caso de que no se diera cuenta, tenga en cuenta que df
es en realidad una función. Es posible que desee tener cuidado al sobrescribir. Si usted rm(df)
, las cosas volverán a la normalidad.
No olvides relaborar el eje Y como sugiere Nick.
Para el eje vertical que aumenta en la dirección descendente, proporcioné dos formas (dos respuestas diferentes) para la siguiente pregunta: