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

画像を引き伸ばさずにMatplotlibのimshowでスケールを変更する方法

Matplotlibのimshowで画像を引き伸ばすことなくスケール(縦横比)を変更したい場合、extentパラメータとaspectパラメータを組み合わせて使うことで実現できます。本記事では、その具体的な手順をサンプルコード付きで解説します。

手順

  • 図(figure)のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。

  • 4×4次元のランダムなデータポイントを作成します。

  • imshow()を使って、データを2次元のラスター画像として表示します。

  • extentパラメータを使用して、画像バッファのピクセル座標をデータ空間の座標系へマッピングします。これにより、軸の範囲を自由に指定できます。

  • aspectパラメータに数値(例:aspect=4)を指定してアスペクト比を手動で設定するか、aspect='auto'を指定して自動スケーリングさせます。これにより、画像が引き伸ばされるのを防げます。なお、デフォルトではimshowはプロットのアスペクト比を1に設定するため、データの形状によっては画像が歪んで見えることがあります。

  • 最後にshow()メソッドを呼び出して、図を表示します。

サンプルコード

import numpy as np
from matplotlib import pyplot as plt

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

data = np.random.rand(4, 4)

plt.imshow(data, origin='lower', extent=[-4, 4, -1, 1], aspect=4)

plt.show()

実行結果

このコードを実行すると、以下のような出力が得られます。X軸の範囲が-4から4、Y軸の範囲が-1から1に設定され、アスペクト比が4に保たれているため、画像は引き伸ばされずに正しく表示されます。

画像を引き伸ばさずにMatplotlibのimshowでスケールを変更する方法

ポイントまとめ

  • extent=[xmin, xmax, ymin, ymax]:画像の各辺が対応するデータ座標を指定します。

  • origin='lower':原点を左下に設定します(デフォルトは左上の'upper')。

  • aspect:数値を指定すると縦横比が固定され、'auto'を指定すると軸の範囲に合わせて自動調整されます。


  1. データを失わずにAPFS暗号化パスワードを変更する方法【完全ガイド】

    ディスクユーティリティでパスワード変更がグレーアウトして選択できない、ターミナルからAPFSの暗号化パスワードを変更できない――そんなお困りの方に向けて、本記事ではAPFS暗号化パスワードの変更方法と、「iBoysoft Mac Data Recovery」を使った暗号化ボリュームからのデータ復旧手順を詳しく解説します。APFS(Apple File System)はネイティブ暗号化を備えたファイルシステムで、従来のHFS+よりも高いレベルのセキュリティを実現しています。HFS+と異なり、APFSはシステムレベル・ファイルレベル・特定のデータやメタデータに対して、シングルキー方式とマルチキー方

  2. Image Resizerで画像形式を変換する方法|初心者向けに手順をわかりやすく解説

    デジタル画像は、手元のスナップ写真とは違い、さまざまな用途に柔軟に活用できます。リサイズやトリミング、回転といった編集はもちろん、フォーマット(形式)の変更も自由自在です。ただし、これらの作業を行うには画像編集ツールが必要になります。Adobe Photoshopのような高機能ソフトもありますが、操作が難しく、初心者にはハードルが高いのが実情です。そこで本記事では、シンプルで直感的に使えるフリーツール「Image Resizer」を使って、デジタル写真の形式を変更する方法をご紹介します。このツールを使えば、誰でも簡単に画像を別の形式へ変換できます。Image Resizerの主な機能すでにお気