파이썬의 그래프 그리기 라이브러리는 매우 방대한 기능을 갖추고 있어, 단순한 차트를 넘어 국기처럼 다양한 도형을 자유롭게 그릴 수 있습니다. 이런 점에서 해당 모듈에는 예술적인 감각까지 담겨 있다고 할 수 있습니다. 이번 글에서는 numpy와 matplotlib 라이브러리를 활용해 인도 국기를 그리는 방법을 단계별로 알아보겠습니다.
접근 방식
동일한 폭의 직사각형 세 개를 만들고, 각각 적절한 색상과 테두리로 채웁니다.
pyplot 함수를 사용해 가운데 직사각형의 중앙에 아소카 차크라(Ashok Chakra)의 원을 그립니다.
numpy와 matplotlib를 활용해 아소카 차크라 내부의 24개 바퀴살(선)을 그립니다.
위의 모든 그리기 작업에서 색상, 테두리, 반지름, 선 길이를 지정하여 최종적으로 원하는 국기 크기에 맞춥니다.
프로그램
앞서 설명한 접근 방식은 다음 프로그램으로 구현할 수 있습니다.
예제
import numpy as np
import matplotlib.pyplot as py
import matplotlib.patches as patch
#국기의 삼색 배경 그리기
a = patch.Rectangle((0,1), width=12, height=2, facecolor='green', edgecolor='grey')
b = patch.Rectangle((0,3), width=12, height=2, facecolor='white', edgecolor='grey')
c = patch.Rectangle((0,5), width=12, height=2, facecolor='#FF9933', edgecolor='grey')
m,n = py.subplots()
n.add_patch(a)
n.add_patch(b)
n.add_patch(c)
#아소카 차크라 원 그리기
radius=0.8
py.plot(6,4, marker = 'o', markerfacecolor = '#000088ff', markersize = 9.5)
chakra = py.Circle((6, 4), radius, color='#000088ff', fill=False, linewidth=7)
n.add_artist(chakra)
#아소카 차크라의 24개 바퀴살 그리기
for i in range(0,24):
p = 6 + radius/2 * np.cos(np.pi*i/12 + np.pi/48)
q = 6 + radius/2 * np.cos(np.pi*i/12 - np.pi/48)
r = 4 + radius/2 * np.sin(np.pi*i/12 + np.pi/48)
s = 4 + radius/2 * np.sin(np.pi*i/12 - np.pi/48)
t = 6 + radius * np.cos(np.pi*i/12)
u = 4 + radius * np.sin(np.pi*i/12)
n.add_patch(patch.Polygon([[6,4], [p,r], [t,u],[q,s]], fill=True, closed=True, color='#000088ff'))
py.axis('equal')
py.show()
실행 결과
위 코드를 실행하면 다음과 같은 결과 화면을 확인할 수 있습니다.
