Matplotlib カラーマップから色の情報を取得する#
※記事内に商品プロモーションを含むことがあります。
公開日
Matplotlibのカラーマップから色情報を取得する方法について解説します。
Matplotlibで利用可能なカラーマップの一覧については、Matplotlibのカラーマップを参照してください。
カラーマップ情報の取得#
カラーマップ情報を取得する場合、matplotlib.pyplotのget_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
ListedColormapクラス#
ListedColormapクラスのオブジェクトには、以下の属性があります。
N: 色の数name: カラーマップの名前colors: 色の配列。RGB(A)チャネル
例として、先程のtab10のListedColormapオブジェクトの属性を以下に示します。
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_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
緑と茶色を取得して折れ線グラフに適用する例を以下に示します。
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()