【问题标题】:Matplotlib/pyplot: How to enforce axis range?Matplotlib/pyplot:如何强制执行轴范围?
【发布时间】:2011-05-07 09:07:32
【问题描述】:

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

有什么想法吗?

谢谢。

【问题讨论】:

标签: python graph matplotlib axes


【解决方案1】:

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

  1. 在你绘制之前:

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

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

我发现即使我将autoscale_on 设置为False,将axis 放在代码前面也不起作用。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这就是自动缩放的工作原理。如果更改图形,图形会调用自动缩放。 “轴”命令不调用自动缩放。调用自动缩放的“绘图”以外的其他命令与对数刻度和刻度位置相关。自动缩放确保显示操纵的刻度位置。
    【解决方案3】:

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

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

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

    【讨论】:

    • 你可以用ax1.invert_xaxis()得到倒轴。
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2011-02-20
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      相关资源
      最近更新 更多