カラーマップ作成時、範囲外の値となるメッシュを白で描画したい

環境

OS: Mac
エディタ: atom
言語: Python

Numpy以外のモジュールは使い慣れていません。。

実現したいこと

FitファイルのデータをPythonで読み込み、matplotlibでカラーマップを作成したいです(今回用いているFitファイルは'a.fit'という名前です)。

該当のソースコード

Python

import astropy.io.fits as iofits import matplotlib.pyplot as plt import numpy as np list = iofits.open("a.fit") #a.fitは1×301×301の3次元配列(実質2次元)hdu = list[0]data = np.array([hdu.data])header = hdu.header re = data.reshape(1*301, 301) #1×301×301の3次元配列を、301×301の2次元配列に変換 plt.imshow(re, cmap='nipy_spectral', vmin=5e+12, vmax=2e+14)plt.colorbar()plt.savefig('a.png', dpi=200) #画像保存

実現したいこと

カラーマップは上のコードで作成できましたが、もし可能なら、
ある値よりも大きい(または小さい)メッシュについて、白色で描画したいと考えています。

Python

plt.imshow(re, cmap='nipy_spectral', vmin=5e+12, vmax=2e+14)

今回、're'というデータの値を5e+12から2e+14の範囲についてカラーマップで描画しましたが、

カラーマップのパラメータをcmap='nipy_spectral'としたことで、nipy_spectralのデフォルトで範囲外の値となるメッシュが灰色で描画されてしまいます。
(カラーバーを見ると、2e+14以上は灰色になっています)
イメージ説明

そこで、'cmap.set_under('white')'や'cmap.set_over('white')'を使って範囲外の値となるメッシュの色を灰色→白色に変えたいのですが、

name 'cmap' is not defined

と出てきて、上手くいきませんでした。

どこを訂正すればよいでしょうか、教えていただきたいです。

コメントを投稿

0 コメント