以下の内容はhttps://phst.hateblo.jp/entry/2023/07/28/080000より取得しました。


Python matplotlib で ROOTの推奨カラーマップ kBird を使う

root.cern.ch

Better palettes like kBird are recommended.

と書かれているのでROOTのkBirdのカラーマップを使ってみよう。

import matplotlib

red_bird   = [ 0.2082, 0.0592, 0.0780, 0.0232, 0.1802, 0.5301, 0.8186, 0.9956, 0.9764]
green_bird = [ 0.1664, 0.3599, 0.5041, 0.6419, 0.7178, 0.7492, 0.7328, 0.7862, 0.9832]
blue_bird  = [ 0.5293, 0.8684, 0.8385, 0.7914, 0.6425, 0.4662, 0.3499, 0.1968, 0.0539]
cdict_bird = dict([(key,tuple([(i/8,val,val) for i,val in enumerate(eval(key+"_bird"))])) for key in ["red","green","blue"]])
cmap_bird = matplotlib.colors.LinearSegmentedColormap('bird', cdict_bird)
import matplotlib.pyplot as plt
plt.cm.get_cmap(cmap_bird)

カラーバーで見ると、ROOTのkBirdはグレースケールにしたとしても視認性は良いので、色覚にハンデキャップがある方にも見やすい。

なお、カラーパレットの数値はROOTのソースコードより拝借した

root.cern

matplotlibに実装されている標準のものだと viridis が一番近いが、黒側に感度の低い日本人にはROOTのkBirdのほうが見やすい気がする。

import matplotlib
matplotlib.colormaps.get_cmap("viridis")

ROOTのkBirdのカラーマップで、SpecTk用のRainbow.pal を生成するコード

import numpy as np
import matplotlib
from matplotlib.colors import LinearSegmentedColormap, to_hex

red_bird   = [0.2082, 0.0592, 0.0780, 0.0232, 0.1802, 0.5301, 0.8186, 0.9956, 0.9764]
green_bird = [0.1664, 0.3599, 0.5041, 0.6419, 0.7178, 0.7492, 0.7328, 0.7862, 0.9832]
blue_bird  = [0.5293, 0.8684, 0.8385, 0.7914, 0.6425, 0.4662, 0.3499, 0.1968, 0.0539]

cdict_bird = {
    "red":   tuple((i/8, v, v) for i, v in enumerate(red_bird)),
    "green": tuple((i/8, v, v) for i, v in enumerate(green_bird)),
    "blue":  tuple((i/8, v, v) for i, v in enumerate(blue_bird)),
}

cmap_bird = LinearSegmentedColormap("bird", cdict_bird)

colors_100 = [to_hex(cmap_bird(t)) for t in np.linspace(0, 1, 100)]
print("\n".join(colors_100))

結果 https://github.com/yoshimotomasahir/SpecTk/blob/Yoshimoto/SpecTk/Rainbow.pal




以上の内容はhttps://phst.hateblo.jp/entry/2023/07/28/080000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14