23

如何将 matplotlib 图的原点翻转到左上角 - 而不是默认的左下角?我正在使用 matplotlib.pylab.plot 来生成绘图(尽管如果有另一个更灵活的绘图例程,请告诉我)。

我正在寻找 matlab 命令的等效项:axis ij;

另外,我花了几个小时浏览 matplotlib 帮助和谷歌,但还没有找到答案。有关我可以在哪里查找答案的一些信息也会有所帮助。

4

5 回答 5

30

最简单的方法是使用:

plt.gca().invert_yaxis()

绘制图像后。Origin仅适用于imshow.

于 2016-03-10T13:21:33.893 回答
13

axis ij只是使y轴向下而不是向上增加,对吗?如果是这样,那么matplotlib.axes.invert_yaxis()可能就是您所需要的——但我现在无法测试。

如果这不起作用,我发现一个邮件帖子建议

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

可能会做你想做的事情axis ij

于 2009-08-29T01:27:29.733 回答
10

对于图像或等高线图,您可以使用关键字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()
于 2009-08-29T01:31:45.017 回答
7

以下是实现此目的的基本方法

ax=pylab.gca()

ax.set_ylim(ax.get_ylim()[::-1])
于 2012-07-25T15:22:55.497 回答
5

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

比这个有优势

plt.gca().invert_yaxis()

并且如果您处于交互模式并且您重复绘制相同的图(可能有更新的数据并且在图之后有一个断点),那么y轴不会每次都保持反转。

于 2016-10-07T17:37:27.880 回答