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

Matplotlibのサブプロットで画像を実際のサイズで表示する方法

Matplotlibのサブプロットに複数の画像を実際のサイズで表示したい場合、いくつかの手順を踏むことで簡単に実現できます。この記事では、2枚の異なる画像を読み込み、それぞれのサブプロットに並べて表示する基本的な方法を解説します。

実装手順

以下の手順に従って、Matplotlibのサブプロットに実際のサイズで画像を表示します。

  • figureサイズの設定: plt.rcParams["figure.figsize"] で図のサイズを指定し、plt.rcParams["figure.autolayout"] = True を設定することで、サブプロット間や周囲の余白(パディング)を自動的に調整できます。
  • 画像の読み込み: imread() メソッドを使って、表示したい2枚の画像(im1とim2)を読み込みます。JPEGやPNGなど、一般的な画像形式に対応しています。
  • 図とサブプロットの作成: plt.subplots() メソッドを使用して、図(figure)とサブプロット(axes)のセットを作成します。nrowsncols 引数で行数・列数を指定できます。
  • 軸の非表示: 各サブプロットに対して axis('off') を呼び出すことで、画像表示に不要な軸(目盛りやラベル)をオフにし、画像だけをきれいに表示できます。
  • 画像の表示: imshow() メソッドを使って、読み込んだ画像データ im1 と im2 をそれぞれのサブプロットに描画します。グレースケールで表示したい場合は cmap='gray' を指定します。
  • 図の表示: 最後に show() メソッドを呼び出して、図を画面に表示します。

サンプルコード

import matplotlib.pyplot as plt

# 図のサイズと自動レイアウト調整を設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 2枚の画像を読み込む
im1 = plt.imread("bird.jpg")
im2 = plt.imread("opencv-logo.png")

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

# 軸をオフにして画像を表示
ax[1].axis('off')
ax[1].imshow(im1, cmap='gray')
ax[0].axis('off')
ax[0].imshow(im2, cmap='gray')

plt.show()

コードのポイント

このコードでは、figsize=[7.50, 3.50] により横長の図を作成し、1行2列のサブプロットに2枚の画像を左右に並べています。autolayout を有効にしているため、タイトルや軸ラベルがあってもレイアウトが崩れません。

なお、カラー画像をそのまま表示したい場合は cmap 引数を省略してください。cmap='gray' はグレースケール画像や、カラーチャンネルを持たない画像を表示する際に便利です。

まとめ

Matplotlibで複数の画像を実際のサイズでサブプロットに表示するには、「図のサイズ設定 → 画像の読み込み → サブプロット作成 → 軸の非表示 → imshow()で描画 → show()で表示」という流れが基本となります。画像比較やデータ可視化の前処理など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。

  1. Matplotlibで軸(Axes)作成後にサブプロットのサイズ・位置を変更する方法

    Matplotlibでは、軸(Axes)を作成した後でも、GridSpecクラスを活用することでサブプロットのサイズや位置を柔軟に変更できます。以下の手順に沿って実装方法を見ていきましょう。 figure()メソッドを使って、新しい図を作成するか、既存の図をアクティブにします。 add_subplot()メソッドを使って、図にサブプロット配置の一部として「~.axes.Axes」を追加します。 GridSpec()クラスを使って、図内にサブプロットを配置するためのグリッドレイアウトを定義します。 グリッドスペックの位置を取得し、set_position()で対象の軸に適用します。 set_s

  2. Matplotlibでプロット上のグリッドサイズを定義する方法

    Matplotlib を使ってプロット上にグリッド(格子線)を表示し、その間隔(サイズ)を自由に定義する方法を紹介します。基本的な流れは以下の手順のとおりです。 グリッドサイズを定義する手順 figure() メソッドを使って、新しい図(Figure)を作成するか、既存の図をアクティブにします。 サブプロット配置の一部として、add_subplot() で図に Axes(座標軸)を追加します。 入力リストを渡して曲線をプロットします。 margins() メソッドで x 軸・y 軸のマージンを 0 に設定します。 X 軸のグリッド位置を指定するには、set_ticks() に目盛りの座標