Matplotlibのカラーマップで特定の値の色を再定義する方法
Matplotlibのカラーマップにおいて、特定の値に対応する色を再定義したい場合は、以下の手順で実現できます。
get_cmap() メソッドを使用してカラーマップのインスタンスを取得します。引数 name が None の場合、rcParams のデフォルト設定値が使用されます。ここでは「gray」カラーマップを指定しています。
set_under() メソッドを使用して、
norm.clip = Falseの場合に正規化範囲より下側(低い値)として扱われるデータに割り当てる色を設定します。これにより、閾値未満の値を任意の色で強調表示できます。imshow() メソッドを使用して、データを2次元の正規ラスター上の画像として描画します。このとき
vminを指定することで、下限値より小さい値が「under」領域として処理されます。show() メソッドを使用して、作成した図を画面に表示します。
サンプルコード
import numpy as np
from matplotlib import pyplot as plt, cm
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
cmap = cm.get_cmap('gray')
cmap.set_under('red')
plt.imshow(np.arange(25).reshape(5, 5),
interpolation='none',
cmap=cmap,
vmin=.001)
plt.show()
このコードでは、0〜24の数値を5×5の配列に変換してグレースケールで表示しています。vmin=.001 により値0は下限未満とみなされ、set_under('red') の設定によって赤色で描画されます。残りのセルは gray カラーマップに従って白から黒のグラデーションで表示されます。
出力結果

-
Matplotlibの軸から相対シフト(オフセット表示)を削除する方法
Matplotlibでは、大きな数値をプロットした際に、軸ラベルが「1e3」のような相対シフト(オフセット表記)で自動的に表示されることがあります。このオフセット表示を削除して、実際の数値をそのまま表示したい場合は、以下の手順に従ってください。 手順 2つの入力リストを使用して折れ線グラフを描画します。 gca() メソッドで現在の軸(Axes)を取得し、X軸のインスタンスを返します。続いて get_major_formatter() で主目盛りのフォーマッターを取得し、set_useOffset(False) メソッドを呼び出すことで相対シフトを無効にします。 図を表示するには、show(
-
Matplotlibでhist2dプロットにカラーバーを追加する方法
Matplotlibのhist2dプロット(2次元ヒストグラム)にカラーバーを追加するには、colorbar()メソッドの引数にスカラーマッピング可能なオブジェクト(ScalarMappable)を渡します。 実装手順 NumPyを使ってxとyのデータポイントを作成します。 subplots()メソッドを使って、図とサブプロットを作成します。 hist2d()メソッドを使って、2次元ヒストグラムを描画します。 hist2dから返されるスカラーマッピングオブジェクトをもとに、colorbar()でカラーバーを作成します。 show()メソッドを使って、図を表示します。 コード例 import