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)
参考文献。