Question

J'ai ce problème. Je suis un heatmap, (mais je suppose que cela s'applique à chaque parcelle) mais je dois refléter mon axe y.

Je suis arrivé ici quelques exemples de code:

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)) 

Cela va générer la heatmap suivante Première heatmap Mais j'ai besoin du miroir y axe. A partir de 0 sur le dessus et 50 sur le fond. Est-ce que quelqu'un a une idée de ce que je dois faire pour changer cela? heatmap miroir

Était-ce utile?

La solution

Voir la page d'aide? Plot.default, qui précise

xlim: les limites de x (x1, x2) de la parcelle. Notez que « x1> x2 » est permis et conduit à un « axe inversé ».

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), ylim = rev(range(y)))

Autres conseils

Est-ce que ce travail pour vous (c'est un peu un hack, si)?

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 fonction Revaxis dans le package de PLOTRIX « inverse le sens de l'une ou l'autre ou les deux des « x » et « axes de y » ». Il ne résout pas votre problème (la solution de Nick est la bonne), mais peut être utile lorsque vous avez besoin de tracer un diagramme de dispersion avec des axes inverse.

J'utiliser rev comme ceci:

df <- data.frame(x=x,y=rev(y),z=z)

Dans le cas où vous ne le saviez pas, notez que df est en fait une fonction. Vous voudrez peut-être prudent si vous écrasez. Si vous rm(df), les choses vont revenir à la normale.

Ne pas oublier de réétiqueter l'axe y comme l'indique Nick.

Pour l'axe vertical augmentant dans la direction vers le bas, je fourni deux façons (deux réponses différentes) pour la question suivante:

R - image d'une matrice de pixels

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top