Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib에서 그래프 모서리에 텍스트 추가하는 방법 – annotate() 완벽 가이드

Matplotlib에서 종횡비(가로세로 비율)가 동일한 그래프의 모서리에 텍스트를 배치하려면 annotate() 메서드와 axes fraction 좌표계를 활용하면 됩니다. 아래에서 단계별로 자세히 알아보겠습니다.

구현 단계

  • 그림 크기를 설정하고 서브플롯 간 및 주변 여백(padding)을 조정합니다.
  • subplots() 메서드를 사용하여 그림과 서브플롯 집합을 생성합니다.
  • numpy를 이용해 x 데이터 포인트를 만듭니다.
  • plot() 메서드로 첫 번째 축(ax1)에 x 값을 플롯합니다.
  • plot() 메서드로 두 번째 축(ax2)에 x와 2*x를 플롯합니다.
  • 각 축에 대해 annotate() 메서드를 사용하여 그래프 모서리에 텍스트를 배치합니다.
  • show() 메서드로 최종 그림을 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig, axes = plt.subplots(2)
x = np.linspace(-2, 2, 10)

axes[0].plot(x)
axes[1].plot(x, 2*x)

for ax in axes:
    ax.annotate('Straight Line', xy=(1, 0), xycoords='axes fraction',
                fontsize=10, horizontalalignment='right', verticalalignment='bottom')

plt.show()

코드 핵심 포인트

이 코드의 핵심은 annotate() 메서드의 xycoords='axes fraction' 옵션입니다. 이 옵션을 사용하면 데이터 좌표가 아닌 축을 기준으로 한 상대적 좌표(0~1 범위)로 텍스트 위치를 지정할 수 있습니다. 예를 들어 xy=(1, 0)은 축의 오른쪽 하단 모서리를 의미합니다.

또한 horizontalalignment='right'verticalalignment='bottom' 옵션을 함께 지정하면 텍스트가 모서리 안쪽으로 깔끔하게 정렬되어 그려집니다. 덕분에 그래프 크기나 데이터 범위가 달라져도 텍스트는 항상 동일한 위치에 유지됩니다.

실행 결과

위 코드를 실행하면 두 개의 서브플롯이 세로로 나란히 배치되고, 각 그래프의 오른쪽 하단 모서리에 'Straight Line'이라는 텍스트가 표시됩니다. 이 방식은 그래프에 라벨이나 주석을 일관되게 추가하고 싶을 때 매우 유용합니다.