ylimとxlimを自動的に再スケールする 質問する

ylimとxlimを自動的に再スケールする 質問する

私はmatplotlibを使ってPythonでデータをプロットしています。いくつかの計算に基づいてプロットのデータを更新し、ylimとxlimを自動的に再スケールしたいのですが、代わりにスケールは最初のプロットの制限に基づいて設定されます。MWEは

import random
import matplotlib.pyplot as pyplot

pyplot.ion()

x = range(10)
y = lambda m: [m*random.random() for i in range(10)]

pLine, = pyplot.plot(x, y(1))

for i in range(10):
    pLine.set_ydata(y(i+1))
    pyplot.draw()

最初のプロット コマンドは からのプロットを生成し[0,1]、すべて問題なく確認できます。最後に、y データ配列は から になり、[0,10)その大部分は より大きくなります1が、図の y 制限は のままです[0,1]

を使用して制限を手動で変更できることはわかっていますpyplot.ylim(...)が、何に変更すればよいかわかりません。forループ内で、初めてプロットする場合と同じように制限をスケーリングするように pyplot に指示できますか?

ベストアンサー1

軸の dataLim を更新し、その後、その dataLim に基づいて軸の viewLim を更新する必要があります。適切な方法は、axes.relim()メソッドですax.autoscale_view()。例は次のようになります。

import random
import matplotlib.pyplot as pyplot

pyplot.ion()

x = range(10)
y = lambda m: [m*random.random() for i in range(10)]

pLine, = pyplot.plot(x, y(1))

for i in range(10):
    pLine.set_ydata(y(i+1))

ax = pyplot.gca()

# recompute the ax.dataLim
ax.relim()
# update ax.viewLim using the new dataLim
ax.autoscale_view()
pyplot.draw()

おすすめ記事