2010-11-09 35 views
48

我想用pylot绘制一个标准的二维线图,但强制轴的值在x上为0到600,在y上为10k和20k。让我来举一个例子...Matplotlib/pyplot:如何执行轴范围?

import pylab as p 

p.title(save_file) 
p.axis([0.0,600.0,1000000.0,2000000.0]) 

#define keys and items elsewhere.. 
p.plot(keys,items) 
p.savefig(save_file, dpi=100) 

但是,轴仍然适应数据的大小。我正在解释p.axis的作用是设置最大和最小值,而不是强制它们成为最大值或最小值。当我尝试使用p.xlim()等时会发生同样的情况。

有什么想法?

谢谢。

+1

在添加到下面的答案,直接链接到“轴” DOC:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axis – Calvin1602 2013-01-23 13:25:30

回答

23

要回答我的问题,关键是要关闭自动缩放关闭...

p.axis([0.0,600.0, 10000.0,20000.0]) 
ax = p.gca() 
ax.set_autoscale_on(False) 
35

调用p.plot后设置的限制就是为什么它被重新调整。你在正确的转动自动缩放关闭将得到正确的答案,但如此将调用xlim()ylim()您的plot命令。

我用这颇多反转x轴,我在天文学工作,我们使用了大小系统,这是向后(即亮的恒星具有更小的幅度),所以我通常交换的限制与

lims = xlim() 
xlim([lims[1], lims[0]]) 
+2

可以得到倒轴用'ax1.invert_xaxis ()'。 – Adobe 2013-10-04 07:49:07

7

尝试在所有绘制命令之后再打电话给axis

+0

这是自动缩放的工作原理。如果你改变了这个数字,数字就会自动调整。 “axis”命令不会调用autoscale。除了调用autoscale的“plot”之外的其他命令是logscale和tick位置相关的。自动缩放确保显示操纵的刻度位置。 – Juha 2016-05-15 22:36:15

10

我尝试了所有上述答案,然后总结了如何绘制固定轴图像的流水线。它适用于show函数和savefig函数。

  1. 你之前的情节:

    fig = pylab.figure() 
    ax = fig.gca() 
    ax.set_autoscale_on(False) 
    

这是请求ax这是subplot(1,1,1)

  • 在情节:

    ax.plot('You plot argument') # Put inside your argument, like ax.plot(x,y,label='test') 
    ax.axis('The list of range') # Put in side your range [xmin,xmax,ymin,ymax], like ax.axis([-5,5,-5,200]) 
    
  • 情节后:

    1. 要显示图像:

      fig.show() 
      
    2. 为了节省这个数字:

      fig.savefig('the name of your figure') 
      
  • 我发现,把axis在代码前,即使我已设置autoscale_onFalse将无法​​正常工作。

    我使用此代码来创建一系列动画。下面是将多个固定轴图像组合成动画的示例。 img