Python
 Computer >> コンピューター >  >> プログラミング >> Python

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のカラーマップで特定の値の色を再定義する方法


  1. Matplotlibの軸から相対シフト(オフセット表示)を削除する方法

    Matplotlibでは、大きな数値をプロットした際に、軸ラベルが「1e3」のような相対シフト(オフセット表記)で自動的に表示されることがあります。このオフセット表示を削除して、実際の数値をそのまま表示したい場合は、以下の手順に従ってください。 手順 2つの入力リストを使用して折れ線グラフを描画します。 gca() メソッドで現在の軸(Axes)を取得し、X軸のインスタンスを返します。続いて get_major_formatter() で主目盛りのフォーマッターを取得し、set_useOffset(False) メソッドを呼び出すことで相対シフトを無効にします。 図を表示するには、show(

  2. Matplotlibでhist2dプロットにカラーバーを追加する方法

    Matplotlibのhist2dプロット(2次元ヒストグラム)にカラーバーを追加するには、colorbar()メソッドの引数にスカラーマッピング可能なオブジェクト(ScalarMappable)を渡します。 実装手順 NumPyを使ってxとyのデータポイントを作成します。 subplots()メソッドを使って、図とサブプロットを作成します。 hist2d()メソッドを使って、2次元ヒストグラムを描画します。 hist2dから返されるスカラーマッピングオブジェクトをもとに、colorbar()でカラーバーを作成します。 show()メソッドを使って、図を表示します。 コード例 import