はじめに
この記事では、Matplotlibを使用して疑似カラーマップのカラーバーを図に合わせて適切に表示する方法について解説します。カラーバーのサイズやポジションを調整し、視覚的に美しく情報を伝えるテクニックを紹介します。
コード&解説

モジュールのインポート
mpl_toolkits.axes_grid1 モジュールから make_axes_locatable をインポートします。
バージョン
図、データの生成と画像の表示
np.random.randn(100).reshape((10, 10))を使用して正規分布に従うデータを100個生成し、それを10×10の行列形式に変換した画像を表示しています。
カラーバーの表示
まず、divider = make_axes_locatable(ax)で図に追加領域を作成します。次に、cax = divider.append_axes(“right”, size=”5%”, pad=0.1)で、メインの図(ax)の右側に、axの幅の5%のサイズで、0.1インチの隙間を空けてカラーバー用の領域を生成します。最後に、plt.colorbar(im, cax=cax)でこの領域にカラーバーを挿入します。
subplotを用いた場合(縦に並べる)

複数の図がsubplotで配置されている場合は、各axに対して個別に「divider1 = make_axes_locatable(ax1)」のように設定することで、上記の例と同様にそれぞれの図にカラーバーを追加できます。
subplotを用いた場合(横に並べる)

複数の図を横に並べて配置する場合も、同様の方法で各図にカラーバーを追加することができます。
2つのカラーマップに対してカラーバーをひとつにする
この場合は、make_axes_locatableではなく、plt.subplots_adjustを使用します。subplots_adjustを使うと、図の余白を調整できます。例えば、subplots_adjust(bottom=0.1, right=0.8, top=0.9)と設定すると、図の下端が0.1の位置から始まり、上端が0.9の位置まで、右端が0.8の位置までの図が生成されます。
次に、cax = plt.axes([0.6, 0.1, 0.025, 0.8])でカラーバー表示用のスペースを設定し、plt.colorbar(cax=cax)でカラーバーを挿入します。これにより、2つのカラーマップに対して1つのカラーバーを表示できます。ただし、caxのx座標位置とsubplot_adjustのrightパラメータの関係がやや分かりにくいため、適切な値を見つけるには試行錯誤が必要です。

コメント
[…] [matplotlibの使い方] 18. カラーバーを図にあわせる疑似カラーマップのカラーバーを図にあわせて表示sabopy.com2019.03.01 […]
[…] [matplotlibの使い方] 18. カラーバーを図にあわせる疑似カラーマップのカラーバーを図にあわせて表示sabopy.com2019.03.01 (adsbygoogle = window.adsbygoogle || []).push({}); […]