Python의 matplotlib 라이브러리(pylab/pyplot)를 활용하면 간단한 수학 공식만으로 아름다운 하트 모양을 그릴 수 있습니다. 이 글에서는 numpy와 pyplot을 이용해 하트 곡선을 생성하고 빨간색으로 채우는 방법을 단계별로 소개합니다.
하트 그리기 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- numpy를 사용하여 x, y1, y2 데이터 포인트를 생성합니다.
- fill_between() 메서드를 사용해 (x, y1)과 (x, y2) 사이 영역을 빨간색으로 채웁니다.
- text() 메서드를 사용해 (0, -1.0) 좌표에 텍스트를 배치합니다.
- show() 메서드로 완성된 그림을 화면에 표시합니다.
하트 곡선의 수학적 원리
하트 모양은 두 개의 함수 조합으로 만들어집니다.
- y1 = √(1 − (|x| − 1)²): 하트의 위쪽 둥근 부분을 담당하는 곡선입니다.
- y2 = −3√(1 − (|x|/2)^0.5): 하트의 아래쪽 뾰족한 부분을 담당하는 곡선입니다.
x 값은 np.linspace(-2, 2, 1000)을 통해 -2부터 2까지 1000개의 균일한 간격으로 생성되며, 이를 통해 매끄러운 곡선을 얻을 수 있습니다.
전체 예제 코드
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True x = np.linspace(-2, 2, 1000) y1 = np.sqrt(1 - (abs(x) - 1) ** 2) y2 = -3 * np.sqrt(1 - (abs(x) / 2) ** 0.5) plt.fill_between(x, y1, color='red') plt.fill_between(x, y2, color='red') plt.text(0, -1.0, 'Heart', fontsize=24, color='black', horizontalalignment='center') plt.show()
코드 설명
- plt.rcParams 설정: 그림 크기를 7.50 × 3.50 인치로 지정하고, 자동 레이아웃 조정을 활성화해 요소들이 잘리지 않도록 합니다.
- fill_between(x, y1, color='red'): 위쪽 곡선 아래 영역을 빨간색으로 채웁니다.
- fill_between(x, y2, color='red'): 아래쪽 곡선 영역 역시 빨간색으로 채워 하나의 하트 형태를 완성합니다.
- plt.text(): 하트 중앙 하단에 검은색 "Heart" 텍스트를 추가하고,
horizontalalignment='center'로 가운데 정렬합니다.
실행 결과
위 코드를 실행하면 빨간색으로 채워진 하트 모양이 화면에 나타나며, 하트 안쪽에 "Heart"라는 텍스트가 표시됩니다. 색상이나 텍스트 내용, 폰트 크기 등을 변경해 다양한 스타일의 하트를 응용할 수 있습니다.