[matplotlib] 9. カラーマップ

matplotlib

matplotlibにおけるカラーマップの設定

このページでは、Matplotlibライブラリを使用したカラーマップの設定方法について解説します。データの視覚化において色の選択は非常に重要で、適切なカラーマップを使うことでデータの傾向や特徴を効果的に表現できます。

Matplotlibの標準カラーマップ

Matplotlibには多数の標準カラーマップが用意されています。代表的なものには以下があります:

連続的なカラーマップ

  • viridis:最新のデフォルトカラーマップ。色覚異常の方にも識別しやすい
  • plasma:紫から黄色へ変化する鮮やかなカラーマップ
  • inferno:黒から黄色へ、火のようなグラデーション
  • magma:黒から白へ、マグマのような色調変化
  • cividis:色覚異常の方向けに特別に設計されたカラーマップ

順序カラーマップ

  • Blues, Greens, Reds, Purples:単色の明暗変化
  • RdBu:赤から青へのグラデーション(正負の値の表現に適する)

区分的カラーマップ

  • tab10, tab20:カテゴリカルデータ向けの鮮明な色の集合
  • Accent, Set1, Set2, Set3:カテゴリを区別するための色セット

解説

モジュールのインポート

データの生成

np.meshgridを使ってxとyから2次元データ(X,Y)を作成し、これらを用いてZデータを生成することで3次元データを構築します。

cmapを設定しない場合のcmap

imshowを使用して画像を表示します。interpolationパラメータは補間方法を指定し、「gaussian」に設定するとデータ間がガウス関数で滑らかに補間されます。

extent=[-4, 4, -4, 4]でx軸とy軸の表示範囲を設定し、vmaxとvminでZ軸の値の範囲を指定します。plt.colorbar()を追加するとカラーバーが表示されます。

cmapを指定しない場合は、デフォルトのviridisカラーマップが適用されます。

連続的に変化するcmap

viridisと同様に、連続的に変化するcmapは他にも多数あります。例えば、cividisは次のような特徴を持っています。

単純に段階的に変化するカラーマップとしては、Greysなどがあり、以下のような特徴を持ちます。

発散するcmap

中央から発散していくカラーマップとして、PuOrなどがあります。これは地形データなど中間値を持つデータを可視化する場合に効果的に利用できます。

周期性をもつcmap

hsvなどの周期的なcmapは、Zの最大値と最小値が同じ色になってしまうため注意が必要です。

定性的なcmap

定性的なカラーマップが必要な場合は、tab10などが適しています。

viridisなどで定性的なカラーマップを作成した場合は以下のようになります。

plt.colorbar(im, ticks=np.linspace(-abs(Z).max(), abs(Z).max(), 11))を使用することで、カラーバーに均等間隔の目盛りを設定し、色の変化点を明確に表示しています。

その他のcmap

gist_earthやterrainは地形データや水深データを表示するのに適したカラーマップです。

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

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

参考

Colormap reference — Matplotlib 3.10.6 documentation
Many ways to plot images — Matplotlib 3.10.6 documentation

コメント