我正在尝试绘制一些数据的子集,但是在设置 x 轴限制后,y 轴限制没有正确更新。有没有办法让 matplotlib 在设置 x 轴限制后更新 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)
但这至少可以说很麻烦(恕我直言)。有没有更快的方法可以在不手动计算绘图范围的情况下做到这一点?谢谢!
更新 2:
函数autoscale做了一些缩放,似乎是这项工作的合适人选,但独立处理轴并且仅缩放到完整数据范围,无论轴限制是多少。