我正在尝试绘制一些数据的子集,但在设置x轴限制后,y轴限制没有被正确更新。有没有办法让matplotlib在设置x轴限制后更新y轴限制?
例如,考虑以下图表:
但是这样说起来至少很麻烦(在我看来)。有没有更快的方法可以在不手动计算绘图范围的情况下完成?谢谢!更新2:函数autoscale执行一些缩放操作,似乎是这项工作的合适候选者,但它独立处理轴,并且仅按照完整数据范围缩放,无论轴限制如何。
例如,考虑以下图表:
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)
但是这样说起来至少很麻烦(在我看来)。有没有更快的方法可以在不手动计算绘图范围的情况下完成?谢谢!更新2:函数autoscale执行一些缩放操作,似乎是这项工作的合适候选者,但它独立处理轴,并且仅按照完整数据范围缩放,无论轴限制如何。