[파이썬] matplotlib 패스와 패치 이해하기

matplotlib logo

matplotlib는 파이썬에서 데이터 시각화를 위한 힘있는 도구입니다. 그러나 matplotlib를 활용하기 위해서는 패스와 패치에 대한 이해가 필요합니다. 이 블로그 포스트에서는 matplotlib에서 사용되는 패스와 패치의 개념과 기능에 대해 알아보겠습니다.

패스(Path)란?

패스matplotlib에서 기하학적 형상을 나타내는 객체입니다. 직선, 곡선, 다각형 등의 형상을 표현할 수 있습니다. 패스 객체는 좌표를 사용하여 형상을 정의하고, 다양한 속성을 지정할 수 있습니다. matplotlib의 여러 그래프 요소들은 패스를 사용하여 그려집니다.

아래는 간단한 패스를 생성하고 이를 그래프에 그리는 예제 코드입니다.

import matplotlib.pyplot as plt
import matplotlib.path as mpath

# 간단한 패스 생성
path_data = [
    (mpath.Path.MOVETO, (1, 1)),  # 시작점 이동
    (mpath.Path.LINETO, (1, 4)),  # 직선 이동
    (mpath.Path.LINETO, (4, 4)),  # 직선 이동
    (mpath.Path.LINETO, (4, 1)),  # 직선 이동
    (mpath.Path.CLOSEPOLY, (1, 1)),  # 종료 및 폴리곤 완성
]

# 패스 객체 생성
path = mpath.Path(*zip(*path_data))

# 그래프 생성 및 패스 그리기
fig, ax = plt.subplots()
patch = mpatches.PathPatch(path, facecolor='none', edgecolor='blue')
ax.add_patch(patch)

# 축 범위 설정
ax.set_xlim(0, 5)
ax.set_ylim(0, 5)

plt.show()

위 예제에서는 matplotlib.path.Path 클래스를 사용하여 패스를 정의하고, matplotlib.patches.PathPatch를 사용하여 이를 그래프에 추가합니다. 패치(patch)는 패스에 적용되는 스타일과 속성을 지정할 수 있게 해줍니다.

패치(Patch)란?

패치는 그리기 영역에 적용되는 도형이나 이미지 등의 객체입니다. 패치는 패스를 기반으로 하거나, 이미지, 텍스트 등 matplotlib에서 제공하는 다양한 도구를 활용하여 생성될 수 있습니다. 패치는 데이터를 시각적으로 나타내기 위해 사용되며, 채움(fill), 테두리(border), 그림자(shadow) 등 다양한 스타일과 속성을 가질 수 있습니다.

아래는 원형 패치를 생성하고 이를 그래프에 추가하는 예제 코드입니다.

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

# 원형 패치 생성
circle = mpatches.Circle((0.5, 0.5), 0.3, facecolor='blue', edgecolor='red')

# 그래프 생성 및 패치 그리기
fig, ax = plt.subplots()
ax.add_patch(circle)

# 축 범위 설정
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)

plt.show()

위 예제에서는 matplotlib.patches.Circle 클래스를 사용하여 원형 패치를 생성하고, add_patch() 메서드를 사용하여 이를 그래프에 추가합니다. Circle 클래스는 중심 좌표와 반지름을 인자로 받아 원의 형태를 가진 패치를 생성합니다.

이처럼 matplotlib 패키지에서 제공하는 다양한 패치 객체를 이용하여 그래프를 꾸밀 수 있으며, 패스와 패치의 조합을 통해 다양한 형상과 스타일을 표현할 수 있습니다.

이제 matplotlib의 패스와 패치에 대해 기본적인 개념을 알아보았습니다. 패스와 패치를 자유롭게 활용하여 데이터 시각화에 창의성을 발휘해 보세요!