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

Matplotlib 극좌표 플롯에서 선을 곡선 형태로 그리는 방법

Matplotlib의 극좌표(polar) 플롯에서 선이나 곡선을 자연스럽게 구부려 그리고 싶다면, 각도(degree)를 라디안(radian)으로 변환하고 보간(interpolation) 기법을 활용하면 됩니다. 아래에서 단계별로 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
  • 새로운 figure를 생성하거나 기존 figure를 활성화합니다.
  • 서브플롯 배치의 일부로 'ax'(극좌표 축)를 figure에 추가합니다.
  • 특정 각도에 대해 color='green', linewidth=2 옵션으로 방사형 선을 그립니다.
  • 곡선(curve) 데이터를 정의한 뒤, 이를 기반으로 x와 y 데이터 포인트를 생성하고 plot() 메서드로 시각화합니다.
  • show() 메서드를 호출하여 결과 figure를 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt
from scipy.interpolate import interp1d
import numpy as np

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

fig = plt.figure()
ax = fig.add_subplot(111, projection="polar")

for degree in [0, 90, 360]:
    rad = np.deg2rad(degree)
    ax.plot([rad, rad], [0, 1], color="green", linewidth=2)

for curve in [[[0, 90], [0.45, 0.75]]]:
    curve[0] = np.deg2rad(curve[0])
    x = np.linspace(curve[0][0], curve[0][1], 500)
    y = interp1d(curve[0], curve[1])(x)
    ax.plot(x, y, lw=7, color='red')

plt.show()

코드 설명

위 코드의 핵심 동작은 다음과 같습니다.

  • np.deg2rad(): 0도, 90도, 360도 위치의 각도를 라디안 값으로 변환하여 초록색 방사형 기준선을 그립니다.
  • scipy.interpolate.interp1d: 시작점과 끝점(반지름 0.45 → 0.75) 사이를 부드럽게 보간하여 곡선 형태의 경로를 만듭니다.
  • np.linspace: 두 각도 사이를 500개의 세밀한 구간으로 나누어 매끄러운 곡선을 얻습니다.
  • 마지막으로 굵기 7의 빨간색 곡선을 극좌표 플롯 위에 렌더링합니다.

실행 결과

위 코드를 실행하면 극좌표 평면에 초록색 방사형 선들과 함께, 중심에서 바깥쪽으로 점점 넓어지는 빨간색 곡선이 출력됩니다.

Matplotlib 극좌표 플롯에서 선을 곡선 형태로 그리는 방법