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

Matplotlib에서 X축 특정 범위에 주석(Annotation) 추가하는 방법

Matplotlib에서 X축의 특정 구간을 강조하고 싶을 때는 annotate() 메서드를 활용하면 됩니다. 화살표로 범위를 표시하고, 텍스트 라벨을 함께 추가하여 원하는 영역을 시각적으로 명확하게 나타낼 수 있습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • NumPy를 사용하여 xx, yy 데이터 포인트를 생성합니다.
  • figure와 서브플롯(subplots)을 생성합니다.
  • plot() 메서드로 xx, yy 데이터를 플로팅합니다.
  • y축의 표시 범위(ylim)를 설정합니다.
  • annotate() 메서드를 사용해 화살표 머리(arrow head)와 범위 이름 태그를 배치합니다.
  • show() 메서드로 최종 그림을 화면에 출력합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

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

xx = np.linspace(0, 10)
yy = np.sin(xx)

fig, ax = plt.subplots(1, 1)

ax.plot(xx, yy)
ax.set_ylim([-2, 2])

# 양방향 화살표로 X축의 5~8 구간 표시
ax.annotate('', xy=(5,2), xytext=(8,2),
            xycoords='data', textcoords='data',
            arrowprops={'arrowstyle': '<|-|>'}, color='yellow')

# 범위 이름 텍스트 추가
ax.annotate('Maximum Range', xy=(5,5), ha='center', va='center', color='red')

plt.show()

코드 설명

위 예제에서 첫 번째 annotate() 호출은 x=5부터 x=8까지의 구간을 양방향 화살표(<|-|>)로 연결하여 해당 범위를 강조합니다. 두 번째 호출은 'Maximum Range'라는 텍스트 라벨을 그래프 위에 배치하여 어떤 구간인지 알려줍니다. xycoordstextcoords를 모두 'data'로 지정하면 좌표가 데이터 기준으로 해석됩니다.

실행 결과

코드를 실행하면 사인 곡선 위에 빨간색 텍스트 라벨이 표시되고, X축의 지정된 구간이 화살표로 표시된 그래프를 확인할 수 있습니다.