Matplotlib에서 주어진 점 집합을 이용해 가장 큰 다각형을 그리려면 matplotlib.patches 모듈의 Polygon 클래스를 활용하면 됩니다. 아래에서 단계별로 살펴보겠습니다.
구현 단계
- matplotlib.patches에서 Polygon을 임포트합니다.
- 그림 크기를 설정하고 서브플롯 주변의 여백(padding)을 자동으로 조정합니다.
- 다각형을 구성할 데이터 포인트 목록을 생성합니다. 각 점이 순서대로 연결되어 가장 큰 외곽 다각형을 형성합니다.
- 해당 좌표 배열로 Polygon 인스턴스를 만듭니다.
- figure와 subplot 집합을 생성합니다.
- Polygon 패치(patch)를 축(ax)에 추가합니다.
- x축과 y축의 표시 범위(limit)를 지정합니다.
- show() 메서드를 호출하여 그림을 화면에 출력합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Polygon plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # 다각형을 구성할 정점(vertex) 좌표 목록 y = np.array([[1, 1], [0.5, 1.5], [2, 1], [1, 2], [2, 2]]) # 검은색으로 채워진 다각형 인스턴스 생성 p = Polygon(y, facecolor='k') fig, ax = plt.subplots() ax.add_patch(p) ax.set_xlim([0, 3]) ax.set_ylim([0, 3]) plt.show()
실행 결과
위 코드를 실행하면 입력한 점들을 순서대로 연결하여 만들어진 다각형이 검은색으로 채워진 채 그려집니다. 점들의 배치에 따라 다각형의 모양이 결정되며, 좌표 순서가 곧 다각형의 외곽선 경로가 된다는 점에 유의하세요.


추가 팁
- 점들이 무작위 순서로 주어진 경우, 볼록 껍질(convex hull) 알고리즘(예: SciPy의
scipy.spatial.ConvexHull)을 사용해 정점 순서를 먼저 정렬하면 더 깔끔한 결과를 얻을 수 있습니다. facecolor,edgecolor,alpha등의 매개변수를 조절해 다각형의 색상과 투명도를 자유롭게 변경할 수 있습니다.