Matplotlib에서 그린 사각형 안에 텍스트를 넣고 싶다면, annotate() 메서드에 라벨을 지정하고 사각형의 중심 좌표에 텍스트를 배치하면 됩니다. 이 방법은 차트 위에 도형과 함께 설명 문구를 표시할 때 매우 유용합니다.
구현 단계
figure() 메서드를 사용해 새 figure를 생성하거나 기존 figure를 활성화합니다.
현재 축(current axis)에 서브플롯(subplot) 배치를 추가합니다.
플롯에 사각형을 그리기 위해 Rectangle() 클래스로 사각형 객체를 생성합니다.
생성한 사각형 패치(patch)를 플롯에 추가합니다.
사각형 안에 텍스트 라벨을 넣기 위해 사각형의 중심 좌표(cx, cy)를 계산합니다.
annotate() 메서드를 사용해 사각형 위에 텍스트를 배치합니다.
x축과 y축의 범위를 지정해 사각형이 화면에 잘 보이도록 합니다.
show() 메서드로 최종 figure를 화면에 출력합니다.
예제 코드
from matplotlib import pyplot as plt, patches
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111)
rectangle = patches.Rectangle((0, 0), 3, 3, edgecolor='orange',
facecolor="green", linewidth=7)
ax.add_patch(rectangle)
rx, ry = rectangle.get_xy()
cx = rx + rectangle.get_width()/2.0
cy = ry + rectangle.get_height()/2.0
ax.annotate("Rectangle", (cx, cy), color='black', weight='bold', fontsize=10, ha='center', va='center')
plt.xlim([-5, 5])
plt.ylim([-5, 5])
plt.show()
코드 설명
위 예제 코드의 핵심 부분을 살펴보겠습니다.
patches.Rectangle((0, 0), 3, 3): 좌표 (0, 0)에서 시작하여 너비와 높이가 각각 3인 사각형을 생성합니다. 여기서는 테두리 색상을 주황색(orange), 내부 색상을 초록색(green), 선 두께를 7로 지정했습니다.rectangle.get_xy(): 사각형의 시작 좌표(rx, ry)를 반환합니다.cx = rx + rectangle.get_width()/2.0및cy = ry + rectangle.get_height()/2.0: 시작 좌표에 너비와 높이의 절반을 더해 사각형의 정중앙 좌표를 계산합니다.ax.annotate(): 계산된 중심 좌표에 "Rectangle"이라는 텍스트를 배치합니다.ha='center'와va='center'옵션으로 텍스트가 정확히 가운데 정렬되도록 설정했으며, 글자색은 검은색, 굵게(bold), 폰트 크기 10으로 지정했습니다.plt.xlim([-5, 5]),plt.ylim([-5, 5]): 축 범위를 -5부터 5까지로 설정해 사각형이 충분히 보이도록 합니다.
실행 결과
코드를 실행하면 주황색 테두리와 초록색 배경을 가진 사각형이 그려지고, 사각형의 정중앙에 검은색 굵은 글씨로 "Rectangle"이라는 텍스트가 표시됩니다.

이 방법을 응용하면 여러 개의 사각형에 각각 다른 라벨을 붙이거나, 데이터 시각화에서 특정 영역에 주석(annotation)을 달 때 활용할 수 있습니다. 사각형의 크기나 위치가 바뀌어도 get_xy(), get_width(), get_height() 메서드를 활용하면 항상 정확한 중심점에 텍스트를 배치할 수 있다는 점이 장점입니다.