Matplotlib坐标系原点调整为左上角

26 投票
5 回答
37934 浏览
提问于 2025-04-15 13:56

我想把matplotlib绘图的原点位置改到左上角,而不是默认的左下角。我现在使用的是matplotlib.pylab.plot来绘图(如果有其他更灵活的绘图方法,请告诉我)。

我在找类似于matlab命令:axis ij; 的功能。

另外,我已经花了几个小时在matplotlib的帮助文档和谷歌上搜索,但还是没有找到答案。如果能告诉我可以在哪里找到答案,那就太好了。

5 个回答

13

axis ij 的意思就是让y轴的数值往下增加,而不是往上对吧?如果是这样的话,使用 matplotlib.axes.invert_yaxis() 可能就能解决你的问题——不过我现在没法测试这个。

如果这个方法不行,我找到了一篇邮件帖子,里面建议可以试试

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

这段代码,可能会让你得到和 axis ij 类似的效果。

34

最简单的方法是使用:

plt.gca().invert_yaxis()

在你绘制完图像之后,Origin 只适用于 imshow

10

对于图像或轮廓图,你可以使用关键字 origin = None | 'lower' | 'upper' 来设置图像的起始位置。而对于线图,你可以将y轴的范围设置为从高到低。

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

撰写回答