🥴

メモ:matplotlibで範囲外の値だけ別の色でimshowしたい時

2024/10/31に公開

以下のコードを参照。出典はChatGPT
0を境にして負の値のところは黒とか、大きくエラーしすぎているところは赤とか、いろんな使い方ができるゾ

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize

# データの作成(例として一部が負の値を含むランダムなデータ)
data = np.random.randn(10, 10) * 2  # -2から2の範囲で生成

# 既存のカラーマップを取得し、端の色を変更
cmap = plt.cm.viridis.copy()
cmap.set_under('black')  # 下限値(デフォルト範囲を超えた低い値)を黒に設定
cmap.set_over('red')     # 上限値(デフォルト範囲を超えた高い値)を赤に設定

# Normalizeを使ってカラーマップの範囲を設定(範囲外の値が set_under/set_over の色になります)
norm = Normalize(vmin=0, vmax=1)  # 0より小さい値が黒、1より大きい値が赤になる

# imshowで表示
plt.imshow(data, cmap=cmap, norm=norm)
plt.colorbar()
plt.show()

Discussion