如何将matplotlib图形的原点翻转到左上角,而不是默认的左下角?我正在使用matplotlib.pylab.plot生成图形(如果有其他更灵活的绘图程序,请告诉我)。
我在寻找matlab命令的等效方法:axis ij;
此外,我花了几个小时搜索matplotlib帮助和谷歌,但没有找到答案。一些关于我可以查找答案的信息也会很有帮助。
如何将matplotlib图形的原点翻转到左上角,而不是默认的左下角?我正在使用matplotlib.pylab.plot生成图形(如果有其他更灵活的绘图程序,请告诉我)。
我在寻找matlab命令的等效方法:axis ij;
此外,我花了几个小时搜索matplotlib帮助和谷歌,但没有找到答案。一些关于我可以查找答案的信息也会很有帮助。
最简单的方法是使用:
plt.gca().invert_yaxis()
绘制图像后,Origin
仅适用于 imshow
。
axis ij
只是使得y轴向下增加而不是向上增加,是这样吗?如果是的话,那么matplotlib.axes.invert_yaxis()
也许就是你所需要的——但我现在无法测试它。
如果这行不通,我在一篇邮件中发现了一个建议。
setp(gca(), 'ylim', reversed(getp(gca(), 'ylim')))
你可能想尝试使用axis ij
来实现相似的效果。
axis ij
只是让y轴向下增加而不是向上,对吗?" 这并不总是正确的: "axis ij
将坐标系原点放置在左上角。 i
轴是垂直的,其值从上到下递增。 j
轴是水平的,其值从左到右递增。" (http://www.ece.northwestern.edu/local-apps/matlabhelp/techdoc/ref/axis.html) - bers对于图像或等高线图,可以使用关键字origin = None | 'lower' | 'upper'
,对于线条图,您可以将ylimits设置为从高到低。
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()
ax=pylab.gca()
ax.set_ylim(ax.get_ylim()[::-1])
plt.ylim(max(plt.ylim()), min(plt.ylim()))
具有优势
plt.gca().invert_yaxis()
如果您处于交互模式,并且重复绘制相同的图(可能是使用更新的数据并在绘图后设置断点),则y轴不会每次都反转。
imshow()
之后运行。谢谢! - kevinmickesubplots
和sharex
/sharey
,那么只需调用此函数一次,否则对于偶数列/行,你将再次以未改变的方式结束。 - pas-calc