Matplotlib 플롯에 좌표계로 주석 달기

Beginner

This tutorial is from open-source community. Access the source code

소개

Matplotlib 는 사용자가 다양한 종류의 플롯과 차트를 생성할 수 있는 강력한 시각화 도구입니다. 주석 (Annotations) 은 Matplotlib 의 중요한 기능 중 하나로, 사용자가 텍스트와 화살표를 플롯에 추가할 수 있도록 합니다. 이 튜토리얼에서는 주석을 위해 다양한 좌표계를 사용하는 방법을 배우겠습니다.

VM 팁

VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 임포트

첫 번째 단계는 필요한 라이브러리를 임포트하는 것입니다. 플롯과 주석을 생성하기 위해 matplotlib.pyplot 라이브러리를 사용합니다.

import matplotlib.pyplot as plt
import numpy as np

데이터 생성

다음으로, 플롯할 데이터를 생성합니다. 사인파 (sine wave) 를 생성하기 위해 numpy 라이브러리를 사용합니다.

x = np.arange(0, 10, 0.005)
y = np.exp(-x/2.) * np.sin(2*np.pi*x)

플롯 생성

이제 matplotlib.pyplot 라이브러리를 사용하여 플롯을 생성합니다. 플롯의 x 및 y 제한을 설정한 다음 데이터를 플롯합니다.

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlim(0, 10)
ax.set_ylim(-1, 1)

좌표 변환

다음 단계는 데이터와 디스플레이의 좌표를 변환하는 것입니다. ax.transData 메서드를 사용하여 데이터 좌표를 변환하고, figure pixels 좌표계를 사용하여 디스플레이 좌표를 변환합니다.

xdata, ydata = 5, 0
xdisplay, ydisplay = ax.transData.transform((xdata, ydata))

주석 추가

마지막 단계는 플롯에 주석을 추가하는 것입니다. ax.annotate 메서드를 사용하여 텍스트와 화살표를 플롯에 추가합니다. 또한 주석의 스타일을 지정하기 위해 bboxarrowprops 매개변수를 사용합니다.

bbox = dict(boxstyle="round", fc="0.8")
arrowprops = dict(
    arrowstyle="->",
    connectionstyle="angle,angleA=0,angleB=90,rad=10")

offset = 72
ax.annotate(
    f'data = ({xdata:.1f}, {ydata:.1f})',
    (xdata, ydata),
    xytext=(-2*offset, offset), textcoords='offset points',
    bbox=bbox, arrowprops=arrowprops)
ax.annotate(
    f'display = ({xdisplay:.1f}, {ydisplay:.1f})',
    xy=(xdisplay, ydisplay), xycoords='figure pixels',
    xytext=(0.5*offset, -offset), textcoords='offset points',
    bbox=bbox, arrowprops=arrowprops)

플롯 표시

마지막 단계는 plt.show() 메서드를 사용하여 플롯을 표시하는 것입니다.

plt.show()

요약

이 튜토리얼에서는 Matplotlib 에서 주석 (annotations) 에 서로 다른 좌표계를 사용하는 방법을 배웠습니다. 플롯을 생성하고, 데이터 및 표시 좌표를 변환했으며, ax.annotate 메서드를 사용하여 플롯에 주석을 추가했습니다. 주석은 사용자가 플롯에 컨텍스트와 정보를 추가할 수 있게 해주는 Matplotlib 의 중요한 기능입니다.