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.

¿Fue útil?

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.

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