【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のプロットからデータを抽出する方法|get_xdata・get_ydataの使い方
Matplotlibで作成したプロットから元のデータを取り出したい場合、get_xdata() メソッドと get_ydata() メソッドを使うことで簡単に実現できます。これらのメソッドは、プロットされたLine2DオブジェクトからX軸・Y軸のデータポイントをそれぞれ取得します。実行手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。numpy を使って y のデータポイントを作成します。y のデータポイントを color=red(赤色)・linewidth=5(線幅5)でプロットします。データ抽出の開始を示すメッセージを出力します。get_xdata() と
-
Matplotlibでカスタムカラーマップを作成し、imshow()でデータをプロットする方法
Matplotlibでimshow()を使ってデータを可視化する際に、独自のカスタムカラーマップを適用したいケースはよくあります。その場合は、以下の手順に従うことで簡単に実現できます。 実装の手順 図(figure)のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 NumPyを使ってランダムなデータポイントを生成します。 色のリストからListedColormapオブジェクトを作成し、カスタムカラーマップを定義します。 データを画像として表示します。つまり、2次元の正規ラスター上に描画します。 図を画面に表示するには、show()メソッドを呼び出します。 なお、