개요
Matplotlib의 imshow() 메서드를 사용하면 이미지 데이터를 2D 래스터 형태로 손쉽게 시각화할 수 있습니다. 기본적으로 Y축은 선형 간격으로 표시되지만, yaxis.set_ticks() 메서드를 활용하면 균등하지 않은 값을 눈금으로 지정하여 축이 비선형처럼 보이도록 만들 수 있습니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백을 조정합니다.
- 현재 그림에 서브플롯을 추가합니다.
yaxis.set_ticks()를 사용하여 비선형 Y축 눈금을 설정합니다.- NumPy를 사용하여 무작위 데이터 포인트를 생성합니다.
imshow() 메서드로 데이터를 2D 정규 래스터 이미지로 표시합니다.show()메서드를 호출하여 그림을 화면에 출력합니다.
예제 코드
import matplotlib.pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True ax = plt.subplot(111) ax.yaxis.set_ticks([0, 2, 4, 8]) data = np.random.randn(5, 5) plt.imshow(data, cmap='copper') plt.show()
코드 설명
위 코드에서는 먼저 rcParams를 통해 그림 크기를 7.50×3.50으로 지정하고 자동 레이아웃 조정을 활성화합니다. 이후 5×5 크기의 무작위 배열을 생성하고 'copper' 컬러맵을 적용해 이미지를 출력합니다.
핵심은 ax.yaxis.set_ticks([0, 2, 4, 8]) 부분입니다. 0, 2, 4, 8처럼 간격이 균등하지 않은 값들을 눈금으로 지정함으로써 Y축이 비선형 간격으로 표시됩니다. 다만 이 방법은 실제 좌표 변환을 수행하는 것이 아니라 눈금 위치만 변경하는 것이므로, 진정한 의미의 비선형 스케일링이 필요하다면 pcolormesh()와 변환된 좌표 배열을 함께 사용하는 방법도 고려할 수 있습니다.
실행 결과

