Open1

Matplotlibのカラーマップを特定範囲に適用して使う方法

くろたんくくろたんく

Matplotlibのカラーマップを特定範囲に適用して使う方法

cmapの端の色の濃い部分をFigの色として使いたくないときなどに、カラーマップの端の濃い部分を除外する方法である。

実装

例えば1/6から5/6部分のみを使いたい時には、以下のように設定する。

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

# データの生成
data = [...]

# カラーマップの作成
cmap = plt.cm.RdBu

# カラーマップの1/6から5/6部分を抽出
colors_ajust = cmap(np.linspace(1/6, 5/6, cmap.N))
cmap_middle = colors.LinearSegmentedColormap.from_list("RdBu_ajust", colors_ajust)

# プロットの作成
plt.imshow(data, cmap=cmap_ajust)
plt.show()

プロット例

例えば
デフォルトのままだとこの様になってしまう図も

カラーマップを調整すれば少し見やすくなる(人による)