2009-08-28 33 views
13

我如何翻转matplotlib阴谋的起源是在左上角的 - 而不是默认的左下?我正在使用matplotlib.pylab.plot生成图(尽管如果有另一个更灵活的绘图程序,请让我知道)。Matplotlib coord。 SYS原点到左上

我想找MATLAB命令的当量:轴IJ;

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

回答

8

对于图像或等值线图,你可以使用关键字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() 
+1

用“ylim([y1,y2])”或“轴([x1,x2,y1,y2])”直接设置轴极限值“。这不是完全通用的,但我相信我可以想出一些通用的东西。也许上面提到的setp命令。 感谢您的帮助! – Nate 2009-08-31 18:38:43

+0

关键字技巧解决了我的问题。 +1 – heltonbiker 2011-11-23 22:36:52

12

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

如果不工作,我发现a mailing post表明

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

可能做你想要像axis ij什么。

+0

我无法让自己invert_yaxis()工作。如果确实如此,那将是理想的。从我可以拼凑在一起,setp命令应该工作,但“反转”返回一个迭代器。我无法让它返回一个序列,尽管我对这个还是比较新的。所以它可能很容易。 – Nate 2009-08-31 18:35:06

4

以下是实现这一

ax=pylab.gca() 

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

最简单的方法基本的方法是使用:

plt.gca().invert_yaxis() 

产地仅适用于imshow

+0

当把卫星图像上的地图与Cartopy放在一起时,这个功能非常棒。请注意,至少在我的用例中,这必须在'imshow()'之后运行。谢谢! – kevinmicke 2018-02-14 23:24:06

3

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

具有优于该

plt.gca().invert_yaxis() 

是,如果你是在交互模式下,你反复用更新的数据绘制相同的图(也许并具有后断点该图)y轴不会每次都保持反转。