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

matplotlib

はじめに

このページでは、matplotlibを使用して等高線図とカラーマップにログスケールのカラーバーを表示する方法について解説しています。データの広い範囲を効果的に可視化するために役立つ技術で、特にLogNormの活用方法や具体的な実装例を詳しく紹介しています。データ分析やPythonでのグラフ作成に役立つ内容です。

下準備

モジュールのインポート

データの生成

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

[matplotlib 3D] 36. 回転放物面体の描画
matplotlibのmplot3dモジュールを使用して数学的に定義された回転放物面体を3D表示する方法を解説。Pythonコードでの実装手順とパラメータ調整による視覚効果の変化を詳細に紹介。

等高線

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

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

コメント