Pergunta

Como posso virar a origem de um gráfico de matplotlib para estar no canto superior esquerdo-em oposição ao padrão inferior esquerdo? Estou usando matplotlib.pylab.plot para produzir o gráfico (embora se houver outra rotina de plotagem que seja mais flexível, entre em contato).

Estou procurando o equivalente ao comando MATLAB: eixo ij;

Além disso, passei algumas horas surfando em ajuda Matplotlib e Google, mas não encontrei uma resposta. Algumas informações sobre onde eu poderia ter procurado a resposta também seriam úteis.

Foi útil?

Solução

Para um gráfico de imagem ou contorno, você pode usar a palavra -chave origin = None | 'lower' | 'upper' E para um gráfico de linha, você pode definir os Ylimits alto para baixo.

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

Outras dicas

A maneira mais fácil é usar:

plt.gca().invert_yaxis()

Depois de plotar a imagem. Origin funciona apenas para imshow.

axis ij Apenas faz com que o eixo y aumente para baixo em vez de cima, certo? Se sim, então matplotlib.axes.invert_yaxis() Pode ser tudo o que você precisa - mas não posso testar isso agora.

Se isso não funcionar, eu encontrei uma postagem de correspondência sugerindo que

setp(gca(), 'ylim', reversed(getp(gca(), 'ylim')))

Pode fazer o que você deseja se parecer axis ij.

A seguir é uma maneira básica de alcançar isso

ax=pylab.gca()

ax.set_ylim(ax.get_ylim()[::-1])

este

plt.ylim(max(plt.ylim()), min(plt.ylim()))

tem uma vantagem sobre isso

plt.gca().invert_yaxis()

E é que, se você estiver no modo interativo e traçar repetidamente o mesmo gráfico (talvez com dados atualizados e com um ponto de interrupção após o gráfico), o eixo Y não continuará invertendo todas as vezes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top