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

Matplotlib imshow()로 비선형 Y축 이미지 플롯하는 방법

개요

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()와 변환된 좌표 배열을 함께 사용하는 방법도 고려할 수 있습니다.

실행 결과

Matplotlib imshow()로 비선형 Y축 이미지 플롯하는 방법Matplotlib imshow()로 비선형 Y축 이미지 플롯하는 방법