Matplotlib coord. sys origin to top left

家住魔仙堡 提交于 2019-11-27 14:46:05

问题


How can I flip the origin of a matplotlib plot to be in the upper-left corner - as opposed to the default lower-left? I'm using matplotlib.pylab.plot to produce the plot (though if there is another plotting routine that is more flexible, please let me know).

I'm looking for the equivalent of the matlab command: axis ij;

Also, I've spent a couple hours surfing matplotlib help and google but haven't come up with an answer. Some info on where I could have looked up the answer would be helpful as well.


回答1:


For an image or contour plot, you can use the keyword origin = None | 'lower' | 'upper' and for a line plot, you can set the ylimits high to low.

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



回答2:


The easiest way is to use:

plt.gca().invert_yaxis()

After you plotted the image. Origin works only for imshow.




回答3:


axis ij just makes the y-axis increase downward instead of upward, right? If so, then matplotlib.axes.invert_yaxis() might be all you need -- but I can't test that right now.

If that doesn't work, I found a mailing post suggesting that

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

might do what you want to resemble axis ij.




回答4:


The following is a basic way to achieve this

ax=pylab.gca()

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



回答5:


This

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

has an advantage over this

plt.gca().invert_yaxis()

and is that if you are in interactive mode and you repeatedly plot the same plot (maybe with updated data and having a breakpoint after the plot) the y axis won't keep inverting every time.



来源:https://stackoverflow.com/questions/1349230/matplotlib-coord-sys-origin-to-top-left

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!