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

【Matplotlib】imshow()で行列(マトリックス)にマスクを適用する方法

Matplotlib の imshow() で行列(マトリックス)にマスクを適用したい場合は、NumPy の np.ma.masked_where() メソッドを使用します。このメソッドに下限値と上限値を指定することで、条件に合致する要素だけをマスクし、画像上でその領域を非表示(空白)にできます。

実装の手順

  • 入力行列をマスクするための下限値 l と上限値 u の2つの変数を初期化します。
  • 5×5 のランダムなデータを作成します。
  • l より大きく、かつ u より小さい値を持つ要素をマスクします。
  • nrows=1、ncols=2 のサブプロットを持つ図(figure)を作成します。
  • 軸0と軸1に、データを2Dラスタ画像として表示します。
  • それぞれの軸にタイトルを設定します。
  • show() メソッドで図を画面に表示します。

コード例

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# マスクの下限値と上限値
l = 0.125
u = 0.575

# 5x5 のランダムデータを作成
data = np.random.rand(5, 5)

# lより大きくuより小さい要素をマスク
data = np.ma.masked_where((l < data) & (data < u), data)

# 1行2列のサブプロットを作成
fig, axs = plt.subplots(1, 2)

# 左:マスクなし / 右:マスクあり
axs[0].imshow(data.data)
axs[0].set_title("Without Masked")
axs[1].imshow(data)
axs[1].set_title("With Masked")

plt.show()

出力結果

左側の画像は元のデータをそのまま表示したもので、右側の画像では条件に合致した要素がマスクされ、該当部分が空白として描画されていることが確認できます。このように masked_where() を使えば、特定の値の範囲を簡単に視覚的に除外できます。

【Matplotlib】imshow()で行列(マトリックス)にマスクを適用する方法【Matplotlib】imshow()で行列(マトリックス)にマスクを適用する方法

  1. Matplotlibのプロットからデータを抽出する方法|get_xdata・get_ydataの使い方

    Matplotlibで作成したプロットから元のデータを取り出したい場合、get_xdata() メソッドと get_ydata() メソッドを使うことで簡単に実現できます。これらのメソッドは、プロットされたLine2DオブジェクトからX軸・Y軸のデータポイントをそれぞれ取得します。実行手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。numpy を使って y のデータポイントを作成します。y のデータポイントを color=red(赤色)・linewidth=5(線幅5)でプロットします。データ抽出の開始を示すメッセージを出力します。get_xdata() と

  2. Matplotlibでカスタムカラーマップを作成し、imshow()でデータをプロットする方法

    Matplotlibでimshow()を使ってデータを可視化する際に、独自のカスタムカラーマップを適用したいケースはよくあります。その場合は、以下の手順に従うことで簡単に実現できます。 実装の手順 図(figure)のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 NumPyを使ってランダムなデータポイントを生成します。 色のリストからListedColormapオブジェクトを作成し、カスタムカラーマップを定義します。 データを画像として表示します。つまり、2次元の正規ラスター上に描画します。 図を画面に表示するには、show()メソッドを呼び出します。 なお、