はじめに
等高線図とカラーマップでログスケールのカラーバーを表示する方法について説明する。
下準備
モジュールのインポート
データの生成
データは回転方物面のデータを用いた。
[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’])としてやれば目盛りを文字にできる。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
Contourf and log color scale — Matplotlib 3.1.0 documentation
pylab_examples example code: pcolor_log.py — Matplotlib 2.0.2 documentation
コメント