はじめに
方法
忙しい人向けコード全部はこちら:
import matplotlib.pyplot as plt
import matplotlib.colors
cm = plt.cm.get_cmap("magma")
norm = matplotlib.colors.Normalize(vmin=0, vmax=100)
fig = plt.figure()
cax = fig.add_axes([0,0,1,0.2])
fig.colorbar(plt.cm.ScalarMappable(norm, cm), cax=cax, orientation="horizontal")
plt.show()
解説
(1) カラーマップを定義する(今回は"magma"
を選択)
cm = plt.cm.get_cmap("magma")
(2) 正規化幅を決める(今回は0から100を選択)
norm = matplotlib.colors.Normalize(vmin=0, vmax=100)
(3) figure
と cax
を定義する
fig = plt.figure()
cax = fig.add_axes([0,0,1,0.2]) # [x, y, width, height]
(4) ScalarMappable
を自作して fig.colorbar
に与える
fig.colorbar(plt.cm.ScalarMappable(norm, cm), cax=cax, orientation="horizontal")
通常,この第一引数には ax.imshow
などで描画された Artist を mappable オブジェクトとして渡すことでカラーバーに用いられるカラーマップと値の対応が判断される。
ここでは,そのような mappable オブジェクトを自作することで,思い通りのカラーバーを得ている。
おわりに
例えばデータの値に応じて ax.plot
の色を変えた場合など, mappable オブジェクトが自動生成されない際に便利だと思います。