matplotlib에서 imshow로 표시한 이미지를 늘리거나 왜곡하지 않으면서 크기를 조절하려면 extent와 aspect 매개변수를 함께 활용하면 됩니다. 아래에서 단계별로 자세히 살펴보겠습니다.
구현 단계
그림(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()
출력 결과
위 코드를 실행하면 다음과 같은 출력 결과가 생성됩니다.

핵심 포인트 정리
extent: 이미지가 배치될 데이터 좌표계의 범위를 결정합니다. 위 예제에서는 x축이 -4~4, y축이 -1~1 범위로 설정되었습니다.
aspect: 값이 클수록 이미지가 가로로 넓게 표현됩니다. 'auto'로 설정하면 그림 크기에 맞춰 자동으로 채워지며, 원본 픽셀 비율 유지가 필요하다면 기본값 1을 사용하는 것이 좋습니다.
origin='lower': 배열의 첫 번째 행을 좌표계의 아래쪽에 위치시켜 일반적인 수학적 좌표계와 일치시킵니다.