patches 는 모듈은
Artist 의 subclass인 Patch 클래스들을 제공하여,
다음의 다양한 2D 도형을 쉽게 그릴 수 있게 해줌.
- Arc (호),
- Circle (원),
- CirclePolygon (원의 근사 다각형),
- Ellipse (타원),
- Arrow (화살표),
- FancyArrow (모양 변경 기능이 좀 더 보강된 화살표),
- Rectangle (사각형),
- RegularPolygon (정규다각형),
- PathPatch 등등
다음 그림은 Artist와 Patch, 그리고 patches에서 실제 사용되는 다양한 도형을 추상화한 클래스간의 상속관계를 보여줌.
간단히 말하면,
Patch는
face color와 edge color를 가지는
Artist 임.
예제: 원그리기.
간단하게 Circle을 이용하여 원을 그리는 예제는 다음과 같음.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# 원의 중심 좌표와 반지름 설정
c_pnt = (0.5, 0.5)
r = 0.4
# Figure와 Axes 생성
fig, ax = plt.subplots(figsize=(5,5))
# 원 생성
circle = patches.Circle(
c_pnt,
r,
edgecolor='r',
facecolor='none',
)
# 원을 Axes에 추가
ax.add_patch(circle)
# 축 범위 설정
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
# 그래프 표시
plt.show()
위의 코드에서는 Axes객체인 ax에 포함시키는 과정이 ax.add_patch 메서드로 이루어짐.
참고로 복수개의 patch를 추가하려면,
- matplotlib.collections 모듈의 PatchCollection 과
- Axes객체의 add_collection을 이용하는게 효율적임.
결과는 다음과 같음.
참고자료.
https://matplotlib.org/stable/api/patches_api.html
https://matplotlib.org/stable/api/_as_gen/matplotlib.patches.Circle.html
https://zephyrus1111.tistory.com/402
'Python > matplotlib' 카테고리의 다른 글
[matplotlib] Scripting Layer vs. Artist Layer (0) | 2024.06.02 |
---|---|
[Etc] Anti-Grain Geometry (AGG) (0) | 2024.04.29 |
[matplotlib] matplotlib란 (0) | 2024.03.04 |
[matplotlib] inset: inset_axes and indicate_inset_zoom (0) | 2024.01.23 |
[matplotlib] Visualization: Graph, Chart, Diagram, Figure (1) | 2024.01.22 |