プロットを別のサブプロットに分割しようとしています。達成したいのは、サブプロットのカラーバーを別のサブプロットに配置することです。現在使用しているもの:
# first graph
axes = plt.subplot2grid((4, 2), (0, 0), rowspan=3)
pc = plt.pcolor(df1, cmap='jet')
# second graph
axes = plt.subplot2grid((4, 2), (3, 0))
plt.pcolor(df2, cmap='Greys')
# colorbar
plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc)
しかし、結果は次のようになります(カラーバーに残っている不要な空のグラフに注意してください)。
左側のプロットなしでカラーバーのみを印刷するにはどうすればよいですか?
ありがとう
colorbar()
は、カラーバーが描画されるcax
オブジェクトを指定できるaxes
キーワード引数を受け入れます。
あなたの場合、カラーバーの呼び出しを次のように変更します。
# colorbar
axes = plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc, cax=axes)
これは、subplot2grid
で指定されたスペース全体を占有します。主軸がカラーバー軸よりもはるかに多くの列を占めるようにするか、gridspec
を明示的に設定することにより、これをより合理的に調整できます。たとえば、次のようにすると、図を微調整するのが簡単になる場合があります。
from matplotlib import gridspec
gs = gridspec.GridSpec(2, 2, height_ratios=(3, 1), width_ratios=(9, 1))
# first graph
axes = plt.subplot(gs[0,0])
pc = plt.pcolor(df1, cmap='jet')
# second graph
axes = plt.subplot(gs[1,0])
plt.pcolor(df2, cmap='Greys')
# colorbar
axes = plt.subplot(gs[0,1])
plt.colorbar(pc, cax=axes)
次に、height_ratios
とwidth_ratios
を好みに合わせて変更できます。
caxの代わりにaxを使用する必要があると思います。
# colorbar
axes = plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc, ax=axes)