54

我想用 pylot 绘制一个标准的二维线图,但强制轴的值在 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 的效果解释为设置最大值和最小值,而不是将它们强制为最大值或最小值。当我尝试使用 p.xlim() 等时也会发生同样的情况。

有什么想法吗?

谢谢。

4

4 回答 4

36

在设置限制后调用p.plot是它重新缩放的原因。你是正确的,关闭自动缩放会得到正确的答案,但调用xlim()ylim() 你的plot命令之后也会得到正确的答案。

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

lims = xlim()
xlim([lims[1], lims[0]]) 
于 2010-11-09T17:25:54.290 回答
28

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

p.axis([0.0,600.0, 10000.0,20000.0])
ax = p.gca()
ax.set_autoscale_on(False)
于 2010-11-09T17:17:29.647 回答
11

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

  1. 在你绘制之前:

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

这是请求axwhich is 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')
      

我发现即使我设置了放在axis代码前面也不起作用。autoscale_onFalse

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

于 2015-04-04T18:00:14.173 回答
7

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

于 2010-11-09T17:44:35.860 回答