Matplotlib에서 annotate() 메서드를 사용할 때, 하나의 주석 처리 과정 안에서 텍스트마다 서로 다른 글꼴 크기를 적용하고 싶은 경우가 있습니다. 이는 각 데이터 포인트에 개별적으로 크기를 지정함으로써 손쉽게 구현할 수 있습니다. 아래 단계를 따라 진행해 보겠습니다.
구현 단계
- 텍스트가 배치될 x축, y축 데이터 포인트의 리스트를 생성합니다.
- 문자열 형태의 변수 'labels'를 초기화합니다.
- 각 텍스트에 적용할 글꼴 크기(fontsize) 값들의 리스트를 만듭니다.
- subplots() 메서드를 사용하여 그림(figure)과 서브플롯(ax)을 생성합니다.
- zip() 함수로 위의 리스트들을 순회하면서 각 레이블 텍스트를 주석으로 추가하고, 해당하는 글꼴 크기를 설정합니다.
- 그림을 화면에 표시하려면 show() 메서드를 호출합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
X = [0.1, .2, .3, .4, .5, .6, 0.8]
Y = [0.1, 0.12, 0.13, 0.20, 0.23, 0.25, 0.27]
labels = 'Welcome'
sizes = [10, 20, 30, 40, 50, 60, 70]
fig, ax = plt.subplots()
for x, y, label, size in zip(X, Y, labels, sizes):
ax.annotate(f"$\it{label}$", (x, y), fontsize=size, color='red')
plt.show()실행 결과

코드 설명
위 예제에서 핵심은 zip(X, Y, labels, sizes) 부분입니다. x 좌표, y 좌표, 레이블 문자, 글꼴 크기를 하나씩 짝지어 반복문으로 전달합니다. 반복문 내부에서 ax.annotate()를 호출할 때 fontsize=size 인자를 넘겨주므로, 'W', 'e', 'l', 'c', 'o', 'm', 'e' 각 글자가 10부터 70까지 점점 커지는 크기로 화면에 표시됩니다.
또한 수학 텍스트 모드인 $\it{label}$을 활용해 이탤릭체로 렌더링했으며, color='red' 옵션으로 텍스트 색상을 빨간색으로 지정했습니다. 이처럼 annotate() 메서드의 다양한 인자를 조합하면 위치, 크기, 색상, 스타일을 자유롭게 커스터마이징할 수 있습니다.