Matplotlib coord. sys origin to top left
Solution 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()
Solution 2
The easiest way is to use:
plt.gca().invert_yaxis()
After you plotted the image. Origin
works only for imshow
.
Solution 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
.
Solution 4
The following is a basic way to achieve this
ax=pylab.gca()
ax.set_ylim(ax.get_ylim()[::-1])
Solution 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.
Related videos on Youtube
Nate
Updated on July 09, 2022Comments
-
Nate almost 2 years
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.
-
Nate over 14 yearsDirectly setting the axis limits with "ylim([y1,y2])" or "axis([x1,x2,y1,y2])" worked will. It's not completely generic, but I'm sure I can figure something out to make it generic. Maybe the setp command suggested above. Thanks for the help!
-
kevinmicke about 6 yearsThis worked great when putting maps on satellite imagery with Cartopy. Note that, at least in my use case, this has to run AFTER the
imshow()
.Thanks!