[matplotlibの使い方] 40. 等高線、カラーマップにおけるログスケールのカラーバー

matplotlib

はじめに

等高線図とカラーマップでログスケールのカラーバーを表示する方法について説明する。

下準備

モジュールのインポート

データの生成

データは回転方物面のデータを用いた。

[matplotlib 3D] 36. 回転放物面体
matplotlib mplot3dによる回転放物面

等高線

ログスケールのカラーバーを表示

contourf()でlocator=ticker.LogLocator()と記述することでカラーバーをログスケールにすることができる。

ログカラーバーの目盛りを調整

np.power(10, lev_exp)により、10の塁乗の配列を得られる。そのためlevsは[0.1, 1, 10, 100]となる。contourf()で levs, norm=colors.LogNorm()とすれば、levsの値にカラーバーの目盛りが設定される。

カラーマップ

ログスケールのカラーバーを表示

pcolor()でnorm=colors.LogNorm(vmin=Z.min(), vmax=Z.max())とすることでカラーバーをログスケールにできる。

ログカラーバーの目盛りを調整

cbar.mappable.set_clim(1e0,1e2)とすることでカラーバーの範囲を設定できる。以前は、cbar.set_clim(1e0,1e2)で調整できたが、
The set_clim function was deprecated in Matplotlib 3.1 and will be removed in 3.3. Use ScalarMappable.set_clim instead.
とのことなのでmappableを加えなければならない。詳細は下記を参照。

API Changes — Matplotlib 3.1.0 documentation

目盛りを文字にする

fig.colorbar()でticks=levsとしてラベルを表示する位置に目盛りをセットしてから、cbar.ax.set_yticklabels([‘Low’, ‘Medium’, ‘High’])としてやれば目盛りを文字にできる。

参考

Contourf and log color scale — Matplotlib 3.1.0 documentation
pylab_examples example code: pcolor_log.py — Matplotlib 2.0.2 documentation
コードをダウンロード

コメント