我想绘制一些数据的子集,但是在设置x轴限制后,y轴限制没有正确更新。有没有办法让matplotlib在设置x轴限制后更新y轴限制?设置x轴限制后,Matplotlib的y轴限制不会更新?
例如,请考虑以下情节:
import numpy
import pylab
pylab.plot(numpy.arange(100)**2.0)
这给:
工作正常。然而,如果欲只能查看部分从x = 0到x = 10,在y缩放弄乱:
pylab.plot(numpy.arange(100)**2.0)
pylab.xlim(0,10)
其给出:。
在前一种情况下,x轴和y轴适当缩放,在后一种情况下,即使数据未被绘制,y轴仍然按比例缩放。我如何告诉matplotlib更新y轴缩放比例?
明显的解决方法是绘制数据本身的一个子集,或通过检查数据手动重置y轴限制,但这些都相当麻烦。
更新:
上面的例子被简化,在更普遍的情况下,一个具有:
pylab.plot(xdata, ydata1)
pylab.plot(xdata, ydata2)
pylab.plot(xdata, ydata3)
pylab.xlim(xmin, xmax)
设定y轴手动范围当然是可能的
subidx = N.argwhere((xdata >= xmin) & (xdata <= xmax))
ymin = N.min(ydata1[subidx], ydata2[subidx], ydata3[subidx])
ymax = N.max(ydata1[subidx], ydata2[subidx], ydata3[subidx])
pylab.xlim(xmin, xmax)
,但这至少是很麻烦的(imho)。有没有更快的方法来做到这一点,而无需手动计算绘图范围?谢谢!
更新2:
功能autoscale做一些缩放,似乎对这份工作的合适人选,但对待独立轴和只扩展到完整的数据范围内,无论什么轴限制是。
我并不是说它在计算上很难,我只是想知道matplotlib能够自己更新轴。很显然,如果绘制数据的全部范围,matplotlib会正确地获取轴范围,但当您更新其中一个轴范围imho时,它不会如此逻辑。另外在一般情况下,当你有xdata和ydata时,手动设置变得更麻烦。 – Tim 2012-04-11 07:36:44
逻辑是,一旦手动调整限制,自动缩放会停止。这说得通;考虑一下,如果由于某种原因,你会觉得有多恼人**而不是**希望matplotlib自动调整,但它会。一般情况并没有太大的变化,我想补充一下我的意思。 – 2012-04-11 07:47:06
我同意自动缩放可能会干扰手动缩放,但恕我直言,这不是这里的情况。特别是如果我在绘制之前设置了xrange,我会希望matplotlib相应地更改yrange。例如,Gnuplot就是这样做的。在任何情况下,我假设我的问题的答案是'不',所以谢谢:) – Tim 2012-04-11 08:08:45