これは、両方のコマンドを別々に実行したために発生します。
最初のコマンドでは、画像が作成され、インラインで表示されます。その後、Figure オブジェクトは破棄され、変更できなくなります。
2 番目のコマンドは、イメージを含まない新しい Figure に適用されます。
考えられる解決策はいくつかあります。
例 1: 通常モード
これにより、図が別のウィンドウに表示されます。すべての操作は同じ Figure に適用され、 で表示されるまで非表示のままplt.show()
です。この関数は、Figure が閉じられるまでスクリプトをブロックします。
In [1]: import matplotlib.pyplot as plt
In [2]: import matplotlib.image as mpimg
In [3]: img = mpimg.imread('/tmp/stinkbug.png')
In [4]: lum_img = img[:, :, 0]
In [5]: plt.imshow(lum_img)
Out[5]: <matplotlib.image.AxesImage at 0x7f1a24057748>
In [6]: plt.colorbar()
Out[6]: <matplotlib.colorbar.Colorbar at 0x7f1a24030a58>
In [7]: plt.show()
例 2: 対話モード
これは例 1 と同じですが、Figure ウィンドウがすぐに表示され、連続するプロット呼び出しで更新されます。(私にとってこれは IPython で機能しますが、Jupyter QtConsole では黒いウィンドウしか表示されません。)
In [1]: import matplotlib.pyplot as plt
In [2]: import matplotlib.image as mpimg
In [3]: plt.ion()
In [4]: img = mpimg.imread('/tmp/stinkbug.png')
In [5]: lum_img = img[:, :, 0]
In [6]: plt.imshow(lum_img)
Out[6]: <matplotlib.image.AxesImage at 0x7f7f2061e9b0>
In [7]: plt.colorbar()
Out[7]: <matplotlib.colorbar.Colorbar at 0x7f7f20605128>
例 3: インライン プロット
インライン モードが必要な場合は、次のように、1 つの入力行で複数のコマンドを実行するだけです。

例 4: 高度なインライン プロット
Figure オブジェクトを手動で作成します。このオブジェクトに対して操作 (サブプロットの作成、イメージの描画、カラーバーの追加) を実行し、コマンド ラインにその名前を入力するだけでいつでもインライン Figure を表示できます。
