まず、軸 (基本的にはプロット)、図、マップ可能なスカラー (この場合は画像)、およびカラーバー インスタンスの間で少し混乱していると思います。
プロットが入っているウィンドウです。最figure
上位のコンテナです。
通常、各図には 1 つ以上の がありaxes
ます。これらはプロット/サブプロットです。
カラーバーも図の中にあります。カラーバーを追加すると、カラーバーが表示される新しい軸が作成されます (特に指定しない限り)。 (カラーバーには独自の x と y の制限が必要なため、通常は画像と同じ軸に表示することはできません。等。)
混乱の一部は、状態マシン インターフェイスと OO インターフェイスを混在させているという事実によるものです。これを行うのは問題ありませんが、OO インターフェースを理解する必要があります。
fig.axes[1]
カラーバーのインスタンスではありません。これは、カラーバーがプロットされる軸です (また、fig.axes[1]
図の 2 番目の軸です。1 つのサブプロットと 1 つのカラーバーを持つ図のカラーバーがある軸になることもありますが、一般的にはそうではありません)。ケース。)
カラーバーを更新する場合は、返されるカラーバー インスタンスを保持する必要がありcolorbar
ます。
以下は、通常のアプローチ方法の例です。
import matplotlib.pyplot as plt
import numpy as np
data = np.random.random((10,10)) # Generate some random data to plot
fig, ax = plt.subplots() # Create a figure with a single axes.
im = ax.imshow(data) # Display the image data
cbar = fig.colorbar(im) # Add a colorbar to the figure based on the image
を使用update_normal
してカラーバーを更新する場合は、ScalarMappable
(によって作成された画像imshow
、作成するコレクション、作成scatter
するなど) が渡されることを期待します (他の方法もあります。全体ではなく、制限のみを更新したい場合がよくあります。) 上記のコードの場合、 を呼び出します。 ContourSet
contour
cbar.update_normal(im)
ただし、新しいAxesImage
を作成したのではなく、データを変更しただけです。したがって、おそらくやりたいことは次のとおりです。
cbar.set_clim(newimg.min(), newimg.max())