coord matplotlib. sys origen a la parte superior izquierda
-
20-09-2019 - |
Pregunta
¿Cómo puedo voltear el origen de una parcela matplotlib estar en la esquina superior izquierda - en comparación con el valor por defecto inferior izquierda? Estoy usando matplotlib.pylab.plot para producir la trama (aunque si hay otro de representación gráfica que es más flexible, por favor hágamelo saber).
Estoy buscando el equivalente del comando de MATLAB: ij eje;
Además, he pasado un par de horas navegando ayuda matplotlib y Google, pero no han llegado con una respuesta. Algo de información sobre donde podría haber buscado la respuesta sería útil también.
Solución
Para una parcela de imagen o contorno, puede utilizar la palabra clave origin = None | 'lower' | 'upper'
y por un diagrama de puntos, puede establecer los ylimits mayor a menor.
from pylab import *
A = arange(25)/25.
A = A.reshape((5,5))
figure()
imshow(A, interpolation='nearest', origin='lower')
figure()
imshow(A, interpolation='nearest')
d = arange(5)
figure()
plot(d)
ylim(5, 0)
show()
Otros consejos
La forma más sencilla es utilizar:
plt.gca().invert_yaxis()
Después de que dibujó la imagen. Origin
sólo funciona para imshow
.
axis ij
sólo hace que el eje y aumentan hacia abajo en lugar de hacia arriba, ¿verdad? Si es así, entonces matplotlib.axes.invert_yaxis()
podría ser todo lo que necesita - -., pero no puedo probar que en este momento
Si eso no funciona, me encontré con un poste de correo lo que sugiere que
setp(gca(), 'ylim', reversed(getp(gca(), 'ylim')))
podría hacer lo que quiere parecerse a axis ij
.
La siguiente es una forma básica para lograr este
ax=pylab.gca()
ax.set_ylim(ax.get_ylim()[::-1])
Este
plt.ylim(max(plt.ylim()), min(plt.ylim()))
tiene una ventaja sobre este
plt.gca().invert_yaxis()
Y es que si se encuentra en modo interactivo y se trazan varias veces la misma parcela (tal vez con datos actualizados y tener un punto de interrupción después de la parcela) el eje y no se mantendrá invirtiendo cada vez.