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

Matplotlib에서 채워진 호(Filled Arc)를 그리는 방법

Matplotlib에서 fill_between() 함수를 활용하면 반원 형태의 채워진 호(filled arc)를 손쉽게 그릴 수 있습니다. 이 글에서는 단계별로 구현 방법을 살펴보고, 실제 동작하는 예제 코드까지 함께 확인해 보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯(subplot) 사이와 주변의 여백(padding)을 조정합니다.

  • plt.subplots()를 사용해 figure와 subplot을 생성합니다.

  • 호의 반지름을 결정하는 변수 r과 y축 오프셋 변수 yoff를 초기화합니다.

  • Numpy의 arange()와 sqrt()를 사용해 원의 방정식 기반으로 x, y 데이터 포인트를 생성합니다.

  • fill_between()으로 x축과 곡선 사이 영역을 채웁니다.

  • axis()로 좌표 범위를 지정하고, set_aspect("equal")로 축 비율을 맞춰 호가 찌그러지지 않도록 합니다.

  • show() 메서드를 호출해 그림을 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

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

fg, ax = plt.subplots(1, 1)

r = 2.
yoff = -1

x = np.arange(-1., 1.05, 0.05)
y = np.sqrt(r - x ** 2) + yoff

ax.fill_between(x, y, 0)
ax.axis([-2, 2, -2, 2])
ax.set_aspect("equal")

fg.canvas.draw()

plt.show()

코드 설명

핵심은 원의 방정식입니다. y = √(r − x²)는 반지름이 r인 원의 위쪽 절반(상반원)을 나타냅니다. 여기에 yoff 값을 더해 호 전체를 아래로 이동시킬 수 있습니다.

이후 ax.fill_between(x, y, 0)을 호출하면 곡선과 y=0 사이의 영역이 자동으로 채워져 부채꼴 모양의 채워진 호가 완성됩니다. 마지막으로 set_aspect("equal")을 적용해야 x축과 y축의 스케일이 동일해져 원형이 왜곡되지 않습니다.

실행 결과

위 코드를 실행하면 아래로 살짝 내려간 반원 형태의 채워진 호가 좌표 평면에 표시됩니다.

Matplotlib에서 채워진 호(Filled Arc)를 그리는 방법