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

Stu*_*art 50 python graph axes matplotlib

我想绘制带有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)
Run Code Online (Sandbox Code Playgroud)

但是,轴仍然可以调整到数据大小.我正在解释p.axis的效果是设置max和min可能是什么,而不是强制它们是max或min.当我尝试使用p.xlim()等时会发生同样的情况.

有什么想法吗?

谢谢.

Sim*_*ker 35

p.plot设置限制后调用是重新缩放的原因.你处于一个转折点关闭自动缩放将得到正确的答案是正确的,但这样会打电话xlim()ylim() 您的plot命令.

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

lims = xlim()
xlim([lims[1], lims[0]]) 
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`ax1.invert_xaxis()`获得反转轴. (2认同)

Stu*_*art 26

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

p.axis([0.0,600.0, 10000.0,20000.0])
ax = p.gca()
ax.set_autoscale_on(False)
Run Code Online (Sandbox Code Playgroud)


tk_*_*963 11

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

  1. 在你绘图之前:

    fig = pylab.figure()
    ax = fig.gca()
    ax.set_autoscale_on(False)
    
    Run Code Online (Sandbox Code Playgroud)

这是请求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])
    
    Run Code Online (Sandbox Code Playgroud)
  2. 情节之后:

    1. 要显示图像:

      fig.show()
      
      Run Code Online (Sandbox Code Playgroud)
    2. 要保存图:

      fig.savefig('the name of your figure')
      
      Run Code Online (Sandbox Code Playgroud)

我发现,放axis即使我已经设定在代码前将无法正常工作autoscale_onFalse.

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


Phi*_*ipp 7

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