Matplotlib / pyplot:如何强制轴范围?

时间:2010-11-09 16:52:02

标签: python graph matplotlib axes

我想绘制带有pylot的标准2D线图,但强制轴的值在x上介于0和600之间,y上强制介于10k和20k之间。让我举个例子......

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的效果是设置max和min可能是什么,而不是强制它们是max或min。当我尝试使用p.xlim()等时会发生同样的情况。

有什么想法吗?

感谢。

4 个答案:

答案 0 :(得分:35)

设置限制后调用p.plot是重新缩放的原因。你是正确的,因为关闭自动缩放将获得正确的答案,但在<{strong> xlim()命令之后调用ylim()plot 也是如此。

我使用它来反转x轴,我在天文学中工作,我们使用向后的幅度系统(即更亮的恒星具有更小的幅度)所以我通常用

交换限制
lims = xlim()
xlim([lims[1], lims[0]]) 

答案 1 :(得分:26)

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

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

答案 2 :(得分:11)

我尝试了以上所有这些答案,然后我总结了如何绘制固定轴图像的管道。它适用于show函数和savefig函数。

    在你绘制之前
  1. fig = pylab.figure()
    ax = fig.gca()
    ax.set_autoscale_on(False)
    
  2. 这是请求ax subplot(1,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])
      
    2. 情节之后:

      1. 显示图片:

        fig.show()
        
      2. 保存图:

        fig.savefig('the name of your figure')
        
    3. 我发现即使我已将axis设置为autoscale_on,代码前面的False也无法正常工作。

      我用这段代码创建了一系列动画。以下是将多个固定轴图像组合成动画的示例。 img

答案 3 :(得分:7)

尝试在所有绘图命令之后调用axis