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()