published: 2020/9/25 update: 2020/9/25
matplotlibを使っていて、colorbarだけ作りたい!そして、何らかの値がそのcolorbarのどの色になるのか知りたい!というようなことがあります。
ex) 何らかのSVGがあって、それに値に応じた色をつけたい、そしてカラーバーも欲しい
Python 3.7.4
matplotlib.colorbar.ColorbarBaseを使います。また、カラーバーの値の範囲を決める、ある値がどの色になるかを決める際に、matplotlib.colors.Normalizeを使います。
まず範囲を決めます。
import matplotlib as mpl
import matplotlib.pyplot as plt
print(mpl.__version__)
# '3.2.2'
vmin = -10
vmax = 10
norm = mpl.colors.Normalize(vmin=vmin, vmax=vmax)
カラーバーを書きます。matplotlib.pyplot.get_cmapでcolormapの情報を持ってきます。範囲を決める際に、先程用意したnormを用います。
saveするときが少し注意が必要で、bbox_inches="tight"
をオプションで指定しないとticksや、label情報が消えます。
fig, ax = plt.subplots(figsize=(1,5))
cmap = plt.get_cmap("Wistia")
cbar = mpl.colorbar.ColorbarBase(
ax=ax,
cmap=cmap,
norm=norm,
orientation="vertical",
label="sample",
)
plt.savefig("sample_colormap.png", bbox_inches="tight")
対応するrgbaカラーを取得します。
norm_value = norm(5)
rgba = cmap(norm_value)
print(rgba)
# (0.9998615916955017, 0.6259284890426758, 0.0, 1.0)
記事に間違い等ありましたら、お気軽に以下までご連絡ください
E-mail: illumination.k.27|gmail.com ("|" replaced to "@")
Twitter: @illuminationK
Copyright © illumination-k 2021.