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축의 스케일이 동일해져 원형이 왜곡되지 않습니다.
실행 결과
위 코드를 실행하면 아래로 살짝 내려간 반원 형태의 채워진 호가 좌표 평면에 표시됩니다.
