matplotlibでは、データのスカラー値を色に対応付けるための「カラーマップ(colormap)」が用意されており、これを利用することでヒートマップや散布図、面グラフなどのカラーバリエーションを簡単に実現できます。以下、colormapを取得する基本的な方法と使い方について詳しく解説します。
colormapの取得方法
pyplot.get_cmap()
を使用する方法
matplotlib.pyplot
モジュールに用意されているget_cmap()
関数を使うと、指定した名前のカラーマップオブジェクトを取得できます。たとえば、「viridis」というカラーマップを取得する場合は、以下のように記述します。
import matplotlib.pyplot as plt
# "viridis"カラーマップを取得
cmap = plt.get_cmap("viridis")
cmap

このcmap
オブジェクトは、0から1までの値を入力として呼び出すことができ、対応するRGBA形式の色を返します。例えば、カラーマップの中央(0.5)に対応する色を取得するには:
color_mid = cmap(0.5) # 0.5に対応する色(RGBA)が返される
print(color_mid)
(0.127568, 0.566949, 0.550556, 1.0)
matplotlib.cm.get_cmap()
を使用する方法
matplotlib.cm
モジュールにもget_cmap()
関数が用意されており、同様にカラーマップオブジェクトを取得できます。以下は同じ「viridis」カラーマップを取得する例です。
from matplotlib import colormaps
# "viridis"カラーマップを取得
cmap = colormaps.get_cmap("viridis")
cmap

どちらの方法でも、返されるオブジェクトは同じ型(Colormapオブジェクト)となります。好みやコードの構造に応じて使い分けると良いでしょう。
なお、matplotlib.cm.get_cmap()はdeprecatedになっています。
from matplotlib import cm
# "viridis"カラーマップを取得
cmap = cm.get_cmap("viridis")
cmap
MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead. cmap = cm.get_cmap("viridis")
利用可能なカラーマップの確認
matplotlibには、標準で多数のカラーマップが用意されています。利用可能なカラーマップの一覧を確認する方法はいくつかあります。
matplotlib.colormaps()
を使用する方法(matplotlib 3.5以降)
matplotlib 3.5以降では、matplotlib.colormaps()
関数を使って、登録されているカラーマップの名前一覧を取得できます。
import matplotlib
# 利用可能なカラーマップ一覧を取得
cmap_list = matplotlib.colormaps()
print(cmap_list)
カラーマップの一覧表
次の記事で、カラーマップの一覧表を見ることができます。

カラーマップの活用例
取得したカラーマップは、以下のようにしてグラフの色を制御する際に利用できます。例えば、散布図で各データ点の色をカラーマップに沿って設定する場合は次のようになります。
import numpy as np
# ダミーデータの生成
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.linspace(0, 1, len(x)) # 0から1の値のリスト
# "viridis"カラーマップの取得
cmap = plt.get_cmap("viridis")
# 散布図のプロット
plt.scatter(x, y, c=colors, cmap=cmap)
plt.colorbar() # カラーバーの表示
plt.show()

この例では、colors
配列の値がカラーマップ内で色に変換され、データ点に適用されています。
注意点
- カラーマップ名の指定: 存在しない名前を指定するとエラーになるため、利用可能なカラーマップの名前は公式ドキュメントや
matplotlib.colormaps()
で確認してください。 - バージョン依存: matplotlibのバージョンによっては、利用可能な関数やカラーマップの種類が異なる場合があります。ご利用の環境に合わせて確認することが重要です。
以上の方法で、matplotlibでカラーマップを取得し、データの可視化に活用することができます。