Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

matplotlib에서 이미지 왜곡 없이 imshow 크기 조절하는 방법

matplotlib에서 imshow로 표시한 이미지를 늘리거나 왜곡하지 않으면서 크기를 조절하려면 extentaspect 매개변수를 함께 활용하면 됩니다. 아래에서 단계별로 자세히 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백을 자동으로 조정합니다.

  • numpy를 이용해 4×4 차원의 난수 데이터 포인트를 생성합니다.

  • 생성한 데이터를 이미지 형태, 즉 2D 정규 래스터(raster)에 표시합니다.

  • extent 매개변수를 사용하여 이미지 버퍼의 픽셀 좌표를 데이터 공간 좌표계에 매핑합니다. extent는 [좌, 우, 하, 상] 순서로 좌표 범위를 지정합니다.

  • aspect=4처럼 값을 직접 지정해 이미지의 종횡비(aspect ratio)를 수동으로 설정하거나, 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()

출력 결과

위 코드를 실행하면 다음과 같은 출력 결과가 생성됩니다.

matplotlib에서 이미지 왜곡 없이 imshow 크기 조절하는 방법

핵심 포인트 정리

  • extent: 이미지가 배치될 데이터 좌표계의 범위를 결정합니다. 위 예제에서는 x축이 -4~4, y축이 -1~1 범위로 설정되었습니다.

  • aspect: 값이 클수록 이미지가 가로로 넓게 표현됩니다. 'auto'로 설정하면 그림 크기에 맞춰 자동으로 채워지며, 원본 픽셀 비율 유지가 필요하다면 기본값 1을 사용하는 것이 좋습니다.

  • origin='lower': 배열의 첫 번째 행을 좌표계의 아래쪽에 위치시켜 일반적인 수학적 좌표계와 일치시킵니다.