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

Matplotlib 3D 플롯의 종횡비(Aspect Ratio) 설정 방법

개요

Matplotlib으로 3D 그래프를 그릴 때 축 간 비율이 제각각이면 데이터가 왜곡되어 보일 수 있습니다. set_aspect() 메서드를 활용하면 X, Y, Z축의 종횡비(aspect ratio)를 자유롭게 조절하여 훨씬 정확하고 가독성 높은 시각화 결과를 얻을 수 있습니다.

구현 단계

Matplotlib에서 3D 플롯의 종횡비를 설정하려면 다음 순서대로 진행합니다.

  1. figure() 메서드를 사용해 새 figure를 생성하거나 기존 figure를 활성화합니다.
  2. projection='3d' 옵션과 함께 현재 axes를 가져옵니다(필요한 경우 새로 생성됩니다).
  3. numpy를 이용해 R, Y, z 데이터 포인트를 생성합니다.
  4. R, Y, z 값을 사용해 서피스 플롯(surface plot)을 그립니다.
  5. set_aspect('auto')로 종횡비를 설정합니다.
  6. savefig() 메서드로 figure를 파일로 저장합니다.

예제 코드

from matplotlib import pyplot as plt
from matplotlib import cm
import numpy as np

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

fig = plt.figure()
ax = fig.gca(projection='3d')

R, Y = np.meshgrid(np.arange(0, 100, 1), np.arange(0, 60, 1))
z = 0.1 * np.abs(np.sin(R / 40) * np.sin(Y / 6))

ax.plot_surface(R, Y, z, cmap=cm.rainbow, linewidth=0)
ax.set_aspect('auto')

ax.azim = -160
ax.elev = 30

fig.savefig('data.png')
plt.show()

실행 결과

Matplotlib 3D 플롯의 종횡비(Aspect Ratio) 설정 방법

set_aspect() 옵션 정리

set_aspect()에는 다양한 값을 지정할 수 있으며, 상황에 따라 적절한 옵션을 선택하면 됩니다.

  • 'auto': 사용 가능한 공간에 맞춰 축 비율이 자동으로 조정됩니다. 기본값에 가까운 동작입니다.
  • 'equal': 세 축의 스케일이 동일하게 설정됩니다. 물리적 거리 관계를 정확히 표현해야 할 때 유용합니다.
  • 숫자 튜플 예: (4, 4, 3): 각 축의 배율을 직접 지정할 수 있어 원하는 형태로 그래프를 조형할 수 있습니다.

참고 사항

최신 Matplotlib 버전에서는 fig.gca(projection='3d') 방식이 deprecated(사용 중단 권고)되었습니다. 아래와 같이 add_subplot()을 사용하는 것이 권장됩니다.

ax = fig.add_subplot(projection='3d')

또한 ax.azim(방위각)과 ax.elev(고도각) 값을 조절하면 3D 뷰의 카메라 각도를 변경할 수 있어, 같은 데이터라도 다양한 시점에서 확인할 수 있습니다.