Matplotlib imshow() メソッド
imshow() 関数は Matplotlib ライブラリ内の関数で、画像を表示するために使用されます。
imshow() 関数は、2次元のグレースケール画像やカラー画像を描画するためによく使用されます。
imshow() 関数は、行列、ヒートマップ、地図などを描画するために使用できます。
imshow() メソッドの構文は次のとおりです:
imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, *, data=None, **kwargs)
パラメータの説明:
X:入力データ。2次元配列、3次元配列、PIL画像オブジェクト、matplotlibパスオブジェクトなどを指定できます。cmap:カラーマップ。画像内の異なる値に対応する色を制御します。組み込みのカラーマップを選択できます。例:gray、hot、jetなど、カスタムのカラーマップを定義することもできます。norm:値の正規化方法を制御します。選択できる正規化方法は、Normalize、LogNormなどです。aspect:画像のアスペクト比を制御します。設定できるのは、autoまたは数値です。interpolation:補間方法。画像の滑らかさと詳細度を制御します。選択できる補間方法は、nearest、bilinear、bicubicなどです。alpha:画像の透明度。値の範囲は0〜1です。origin:座標軸の原点の位置。設定できるのは、upper或lower。extent:表示するデータの範囲を制御します。設定できるのは、[xmin, xmax, ymin, ymax]。vmin、vmax:カラーマップの値域範囲を制御します。filternorm 和 filterrad:画像フィルタリングに使用するオブジェクト。設定できるのは、None、antigrain、freetypeなどです。imlim:画像の表示範囲を指定します。resample:画像のリサンプリング方法を指定します。url:画像リンクを指定します。
以下に、imshow() 関数の使用例をいくつか示します。
グレースケール画像を表示する
例
import numpy as np
# 2次元のランダム配列を生成する
img = np.random.rand(10, 10)
# グレースケール画像を描画する
plt.imshow(img, cmap='gray')
# 画像を表示する
plt.show()
上記の例では、10x10 のランダム配列を生成し、imshow() 関数を使用してグレースケール画像として表示しました。
cmap パラメータを gray に設定しました。これは、グレースケールのカラーマップを使用して画像を表示することを意味します。
表示結果は次のとおりです:

カラー画像を表示する
例
import numpy as np
# ランダムなカラー画像を生成する
img = np.random.rand(10, 10, 3)
# カラー画像を描画する
plt.imshow(img)
# 画像を表示する
plt.show()
上記の例では、10x10 のランダムなカラー画像を生成し、imshow() 関数を使用して表示しました。
カラー画像は3次元配列であるため、cmap パラメータを設定する必要はありません。
表示結果は次のとおりです:

ヒートマップを表示する
例
import numpy as np
# 2次元のランダム配列を生成する
data = np.random.rand(10, 10)
# ヒートマップを描画する
plt.imshow(data, cmap='hot')
# 画像を表示する
plt.colorbar()
plt.show()
上記の例では、10x10 のランダム配列を生成し、imshow() 関数を使用してヒートマップとして表示しました。
cmap パラメータを hot に設定しました。これは、ヒートマップのカラーマップを使用して画像を表示することを意味します。
さらに、データの値と色の関係を確認できるように、カラーバー(colorbar)も追加しました。
表示結果は次のとおりです:

地図を表示する
例
import numpy as np
from PIL import Image
# 地図画像を読み込む、ダウンロード先:/static.jyshare.com/images/demo/map.jpeg
img = Image.open('map.jpg')
# 配列に変換する
data = np.array(img)
# 地図を描画する
plt.imshow(data)
# 座標軸を非表示にする
plt.axis('off')
# 画像を表示する
plt.show()
上記の例では、地図画像を読み込み、配列に変換しました。
次に、imshow() 関数を使用して表示し、axis('off')関数を使用して座標軸を非表示にし、地図をより見やすくしました。
表示結果は次のとおりです:

行列を表示する
例
import numpy as np
# ランダムな行列を生成する
data = np.random.rand(10, 10)
# 行列を描画する
plt.imshow(data)
# 画像を表示する
plt.show()
上記の例では、ランダムな行列を生成し、imshow() 関数を使用して画像として表示しました。
行列も2次元配列であるため、imshow() 関数を使用して表示できます。
表示結果は次のとおりです:

その他の例
以下では、4x4 の2次元 numpy 配列を作成し、それに対して3つの異なる imshow 画像表示を行いました。
- 1枚目は、グレースケールのカラーマップ方式を示しており、色のブレンド(blending)は行っていません。
- 2枚目は、viridis カラーマップを使用した画像を示しており、こちらも色のブレンドは行っていません。
- 3枚目は、viridis カラーマップを使用した画像を示しており、バイキュービック補間法を使用して色をブレンドしています。
例
import numpy as np
n = 4
# n x n の2次元 numpy 配列を作成する
a = np.reshape(np.linspace(0,1,n**2), (n,n))
plt.figure(figsize=(12,4.5))
# 1枚目の画像はグレースケールのカラーマップ方式を示し、色のブレンドは行わない
plt.subplot(131)
plt.imshow(a, cmap='gray', interpolation='nearest')
plt.xticks(range(n))
plt.yticks(range(n))
# グレースケールマッピング、ブレンドなし
plt.title('Gray color map, no blending', y=1.02, fontsize=12)
# 2枚目の画像は viridis カラーマップを使用した画像を示し、こちらも色のブレンドは行わない
plt.subplot(132)
plt.imshow(a, cmap='viridis', interpolation='nearest')
plt.yticks([])
plt.xticks(range(n))
# Viridis マッピング、ブレンドなし
plt.title('Viridis color map, no blending', y=1.02, fontsize=12)
# 3枚目の画像は viridis カラーマップを使用した画像を示し、バイキュービック補間法を使用して色をブレンドする
plt.subplot(133)
plt.imshow(a, cmap='viridis', interpolation='bicubic')
plt.yticks([])
plt.xticks(range(n))
# Viridis マッピング、バイキュービックブレンド
plt.title('Viridis color map, bicubic blending', y=1.02, fontsize=12)
plt.show()
表示結果は次のとおりです:
