🥴
メモ:matplotlibで範囲外の値だけ別の色でimshowしたい時
以下のコードを参照。出典は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