[matplotlib] 18. カラーバーを図にあわせる

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)のright(右)に、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つのカラーマップに対してひとつのカラーバーとすることができる。ただし、caxのxの位置と、subplot_adjustのrightの関係が不明瞭であるので、適当な数値を入力して、試行錯誤する必要がある。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

https://matplotlib.org/api/toolkits/index.html#matplotlib-axes-grid1-toolkit
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplots_adjust.html#matplotlib.pyplot.subplots_adjust

コメント

  1. […] [matplotlibの使い方] 18. カラーバーを図にあわせる疑似カラーマップのカラーバーを図にあわせて表示sabopy.com2019.03.01 […]

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