Matplotlib patches 모듈을 사용해서 도형 시각화하기¶
Matplotlib의 patches 모듈을 사용해서 (x, y, width, height)의 형태로 주어진 튜플의 리스트를
도형으로 시각화하는 방법에 대해 소개합니다.
기본 사용¶
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# 1. 기본 스타일 설정
plt.style.use('default')
plt.rcParams['figure.figsize'] = (5, 4)
plt.rcParams['font.size'] = 12
# 2. 사각형 정보를 나타내는 튜플의 리스트
rect = [(30, 60, 100, 200),
(200, 30, 250, 450),
(600, 430, 120, 170),
(750, 120, 210, 300),
(140, 550, 370, 220)]
# 3. add_patch()로 도형 (patches) 시각화하기
fig, ax = plt.subplots()
for (x, y, w, h) in rect:
ax.add_patch(
patches.Rectangle(
(x, y), w, h,
edgecolor='green',
facecolor='palegreen',
linewidth=0.5,
fill=True))
# 4. 그래프 설정 및 띄우기
ax.set_xlim(0, 1000)
ax.set_ylim(0, 800)
plt.show()
이 예제는 사각형 정보 (x, y, width, height) 튜플의 리스트를 지정한 그래프 영역에 시각화합니다.
우선 그래프의 기본 스타일을 설정하고, 사각형 정보를 나타내는 데이터를 준비합니다.
plt.subplots()는 Matplotlib의 Figure 객체와 Axes 객체를 반환합니다.
Axes 객체는 축 (Axis), 눈금 (Tick), 그래프 곡선 (Line2D), 텍스트 (Text),다각형 (Polygon) 등 그래프의 다양한 구성 요소 등을 포함하는 객체입니다.
matplotlib.patches 모듈을 그래프에 표현할 수 있는 다양한 도형 클래스를 포함하고 있습니다. add_patch()를 사용해서 patches 모듈의 도형들을 그래프 영역에 추가했습니다.
결과는 아래와 같습니다.
그래프 꾸미기¶
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# 1. 기본 스타일 설정
plt.style.use('default')
plt.rcParams['figure.figsize'] = (5, 4)
plt.rcParams['font.size'] = 12
# 2. 사각형 정보를 나타내는 튜플의 리스트
rect = [(30, 60, 100, 200),
(200, 30, 250, 450),
(600, 430, 120, 170),
(750, 120, 210, 300),
(140, 550, 370, 220)]
# 3. add_patch()로 도형 (patches) 시각화하기
fig, ax = plt.subplots()
for (x, y, w, h) in rect:
ax.add_patch(
patches.Rectangle(
(x, y), w, h,
edgecolor='darkgreen',
facecolor='green',
linewidth=1.0,
fill=True,
alpha=0.7,
zorder=10))
# 4. 그래프 설정 및 띄우기
ax.set_xlim(0, 1000)
ax.set_ylim(0, 800)
ax.set_xlabel('X-direction')
ax.set_ylabel('Y-direction')
ax.grid()
# ax.axis('off')
ax.tick_params(length=0)
plt.show()
Axes 객체는 그래프의 다양한 구성 요소를 설정하기 위한 다양한 메서드를 포함합니다.
set_xlabel(), set_ylabel()을 사용해서 그래프의 축 레이블을 추가하고,
grid()로 그래프 영역에 격자를 추가했습니다.
axis(‘off’)는 그래프의 눈금과 눈금 레이블 영역을 표시하지 않도록 합니다.
예제에서는 tick_params(length=0)을 사용해서 눈금만 표시되지 않도록 했습니다.
결과는 아래와 같습니다.