Matplotlib カラーマップから色の情報を取得する

Matplotlib カラーマップから色の情報を取得する#

※記事内に商品プロモーションを含むことがあります。

公開日

Matplotlibのカラーマップから色情報を取得する方法について解説します。

Matplotlibで利用可能なカラーマップの一覧については、Matplotlibのカラーマップを参照してください。

カラーマップ情報の取得#

カラーマップ情報を取得する場合、matplotlib.pyplotget_cmap関数を使用します。 引数にカラーマップ名を与えると、matplotlib.colors.ListedColormapオブジェクトが戻り値として得られます。

以下にtab10と呼ばれる10色のカラーマップの例を示します。

import matplotlib.pyplot as plt

tab10_cmap = plt.get_cmap("tab10")

type(tab10_cmap)
matplotlib.colors.ListedColormap

ちなみに、matplotlib.colors.ListedColormapオブジェクトをJupyter Labのセルに入力して実行すると、以下のように全ての色が表示されます。

tab10_cmap
tab10
tab10 colormap
under
bad
over

ListedColormapクラス#

ListedColormapクラスのオブジェクトには、以下の属性があります。

  • N: 色の数

  • name: カラーマップの名前

  • colors: 色の配列。RGB(A)チャネル

例として、先程のtab10ListedColormapオブジェクトの属性を以下に示します。

tab10_cmap.N
10
tab10_cmap.name
'tab10'
tab10_cmap.colors
((0.12156862745098039, 0.4666666666666667, 0.7058823529411765),
 (1.0, 0.4980392156862745, 0.054901960784313725),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529))

cmap.colorsの1行目は青、2行目はオレンジ、3行目は緑、…となっています。

なお、色が連続的に変化するカラーマップの場合、色の数は256のようです。 以下にviridisの例を示します。

viridis_cmap = plt.get_cmap("viridis")
viridis_cmap
viridis
viridis colormap
under
bad
over
viridis_cmap.N
256

色情報の取得#

カラーマップ情報を格納したListedColormapオブジェクトから色の情報を取得する場合、オブジェクトに取得したい色のインデックスを与えます。

以下はtab10カラーマップの最初の色(青)の色情報を取得する例です。 4つの要素があり、順にRed, Green, Blue, Aplhaチャネルの値です。

tab10_cmap(0)
(np.float64(0.12156862745098039),
 np.float64(0.4666666666666667),
 np.float64(0.7058823529411765),
 np.float64(1.0))

リストやタプルで複数の色を指定することも可能です。

tab10_cmap((0, 1))
array([[0.12156863, 0.46666667, 0.70588235, 1.        ],
       [1.        , 0.49803922, 0.05490196, 1.        ]])

色情報をグラフに適用#

カラーマップから取得した色情報を、グラフに適用する例を示します。 Matplotlibの色指定では、4つの数値の配列が与えられた場合、RGBAの値として解釈されます。 したがって、ListedColormapオブジェクトから取得したRGBA情報をそのまま与えるだけで構いません。

tab10のカラーマップを再掲します。

tab10_cmap
tab10
tab10 colormap
under
bad
over

緑と茶色を取得して折れ線グラフに適用する例を以下に示します。

green = tab10_cmap(2)
brown = tab10_cmap(5)

fig, ax = plt.subplots()
ax.plot([0, 1], [0, 1], color=green)
ax.plot([0, 1], [1, 0], color=brown)
plt.show()
../_images/80a478f114130708c9edf2c0b9bbac0a5de0e93f06aa0077b9810c3cced10bc8.png