Matplotlibで複数の画像を順番に表示する方法を解説
Pythonの可視化ライブラリ「Matplotlib」を使えば、複数の画像ファイルを1枚ずつ順番に切り替えながら表示できます。本記事では、画像のシーケンス(一連の画像)を連続的に表示するための基本的な手順とサンプルコードを紹介します。
実装の手順
Matplotlibで一連の画像を表示するには、以下のステップに従います。
- 図のサイズ設定:
plt.rcParamsを使ってフィギュアサイズを指定し、サブプロット間の余白(パディング)を自動調整します。 - 画像リストの作成: 表示したい画像ファイル名をリストとしてまとめます。
- 軸の非表示:
plt.axis('off')で座標軸をオフにし、画像だけをきれいに見せます。 - 画像の描画と更新: リスト内の画像をループ処理し、
set_data()メソッドで同じAxes上に画像を再描画していきます。 - 一時停止の挿入: 各描画の後に
plt.pause()を呼び出し、画像が切り替わる様子を目視できるようにします。
サンプルコード
import matplotlib.pyplot as plt
# フィギュアサイズと自動レイアウトの設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 表示する画像ファイルのリスト
images = ['opera.jpg', 'mountain.jpg', '9.jpg']
plt.axis('off')
img = None
for f in images:
im = plt.imread(f)
if img is None:
# 最初の画像は imshow() で新規表示
img = plt.imshow(im)
plt.pause(0.5)
else:
# 2枚目以降は set_data() でデータを差し替え
img.set_data(im)
plt.pause(0.5)
plt.draw()
コードのポイント
このコードの重要なポイントは、最初の画像だけ imshow() で表示し、2枚目以降は set_data() で画像データを入れ替えている点です。毎回新しいウィンドウやAxesを作成せずに済むため、効率的かつスムーズに画像を切り替えられます。
また、plt.pause(0.5) によって各画像が0.5秒間表示され、plt.draw() で画面が更新されます。この値を変更すれば、表示速度を自由に調整可能です。
実行結果
このコードを実行すると、指定した3枚の画像(opera.jpg、mountain.jpg、9.jpg)が、同じウィンドウ内で0.5秒ごとに1枚ずつ順番に切り替わりながら表示されます。



応用例
この手法は、単純なスライドショーだけでなく、以下のような用途にも活用できます。
- 時系列データの可視化(シミュレーション結果のアニメーション表示)
- 機械学習における学習過程の確認(エポックごとの出力画像の変化)
- 動画フレームの簡易プレビュー
より高度なアニメーションが必要な場合は、matplotlib.animation.FuncAnimation の利用も検討するとよいでしょう。
-
Pythonのmatplotlibで1つのページに複数のプロットを作成する方法
Pandasとmatplotlibを組み合わせることで、データフレームから図(figure)と軸(axis)を簡単に作成し、scatterメソッドを使って点をプロットできます。ここでは、学生の人数と取得点数の関係を散布図として可視化する手順を紹介します。 実装の手順 学生のリスト、各学生が取得した点数のリスト、スコアごとの色分け用リストを作成します。 PandasのDataFrameを使って、手順1のデータからデータフレームを作成します。 subplotsメソッドでfigとax変数を作成します。デフォルトでは行数(nrows)と列数(ncols)はどちらも1に設定されています。 plt.xl
-
Pythonのmatplotlibで積み上げ棒グラフを作成・表示する方法
Matplotlibは、Pythonで最も広く使われているデータ可視化ライブラリの一つです。データの可視化は、数値を一つずつ確認したり複雑な計算を行ったりすることなく、データ全体の傾向や特徴を直感的に把握するために欠かせないステップです。また、定量的な洞察を効果的に伝える手段としても非常に有用です。 Matplotlibは、データをもとに2次元のグラフやプロットを作成するために使用されます。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも可能です。IPythonシェル、Jupyter Notebook、Spyder IDEなど、さまざまな環境で