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 calorFirst heatmapPero 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?mirrored heatmap

¿Fue útil?

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:

R - Imagen de una matriz de píxeles?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top