matplotlibでカラーマップの詳細情報を取得する

過去記事の一覧はこちら。 記事一覧 - Baggage Claim


今日は適当ですみません。

python の matplotlib には256段階で変化するカラーマップがたくさん用意されている。 こいつの詳細な情報、すなわちRGB情報は

cmap = matplotlib.pyplot.get_cmap("colormap-name", "number")

で受け取ることができる。numberはカラーマップの刻み幅。

取得したRGBをを16進数のカラーコードに変換するには

for rgb in cmap:
    matplotlib.colors.rgb2hex(rgb)

を使おう。 まとめて渡せないのがちょっと渋いが、変換しておいたほうがなにかと勝手がいい。

筆者はこれを networkx の描画に活用しているのだが、 お見せできるコードがすぐにはできないため、しょぼい(うまみがない)例を載せておく。 オブジェクト指向インターフェース、ちゃんと勉強しなければ。。。

import matplotlib.pyplot as plt
import matplotlib.colors as mcolor

cmap2 = plt.get_cmap('rainbow', 256) # 取得するカラーマップとその刻み幅
cmap1 = plt.get_cmap('rainbow', 128) 
cmap0 = plt.get_cmap('rainbow', 64) 

l = [i for i in range(256)]

fig = plt.figure()
for i in l:
    rgb2 = cmap2(i)
    rgb1 = cmap1(i)
    rgb0 = cmap0(i)
    
    plt.scatter(i, 2, c = mcolor.rgb2hex(rgb2), s=10)
    plt.scatter(i, 1, c = mcolor.rgb2hex(rgb1), s=10)
    plt.scatter(i, 0, c = mcolor.rgb2hex(rgb0), s=10)

f:id:pur_usupr:20201021185457p:plain

参考文献。

matplotlibのcolormapのRGB情報取得と関連操作 - Qiita

Matplotlibの配色を別の処理でも流用したい | 分析ノート