matplotlibでcolorbarのみplotし、ある値がどの色になるのか判定する

published: 2020/9/25 update: 2021/9/29

Table of Contents

TL;DR

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")
sample_colorbar

対応する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

当HPを応援してくれる方は下のリンクからお布施をいただけると非常に励みになります。

Ofuse

Other Articles

Site Map

Table of Contents

    TL;DR

    やり方


当HPを応援してくれる方は下のリンクからお布施をいただけると非常に励みになります。

Ofuse
Privacy Policy

Copyright © illumination-k 2020-2021.