一部のデータのサブセットをプロットしようとしていますが、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 軸は同じようにスケーリングされます。y 軸のスケーリングを更新するように matplotlib に指示するにはどうすればよいですか?
明らかな回避策は、データ自体のサブセットをプロットするか、データを調べて手動で 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はスケーリングを行い、このジョブに適しているように見えますが、軸を個別に扱い、軸の制限に関係なく、データ範囲全体にのみスケーリングします。