Matplotlib 에서 체크 버튼 사용하기

Beginner

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

소개

이 랩에서는 Python Matplotlib 에서 체크 버튼을 사용하는 방법을 시연합니다. 체크 버튼은 사용자가 체크 박스와 유사하게 체크 버튼을 사용하여 시각적 요소를 켜고 끌 수 있도록 합니다. CheckButtons 함수를 사용하여 세 개의 서로 다른 사인파가 있는 플롯을 생성하고, 체크 버튼으로 어떤 파형을 표시할지 선택할 수 있는 기능을 구현합니다.

VM 팁

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

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

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

라이브러리 임포트

필요한 라이브러리를 임포트하는 것으로 시작합니다. 데이터를 생성하기 위해 numpy가 필요하고, 플롯을 생성하기 위해 matplotlib가 필요합니다.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import CheckButtons

데이터 생성

다음으로, 플롯에 대한 데이터를 생성합니다. numpy를 사용하여 서로 다른 주파수를 가진 세 개의 사인파를 생성합니다.

t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(6*np.pi*t)

플롯 생성

이제 matplotlib를 사용하여 플롯을 생성합니다. 세 개의 사인파를 동일한 그래프에 플롯하고 첫 번째 파의 가시성을 False로 설정합니다. 이는 처음에는 숨겨진 상태로 시작하려는 의도입니다.

fig, ax = plt.subplots()
l0, = ax.plot(t, s0, visible=False, lw=2, color='black', label='1 Hz')
l1, = ax.plot(t, s1, lw=2, color='red', label='2 Hz')
l2, = ax.plot(t, s2, lw=2, color='green', label='3 Hz')
fig.subplots_adjust(left=0.2)

체크 버튼 추가

이제 CheckButtons 함수를 사용하여 플롯에 체크 버튼을 추가합니다. 플롯된 선을 레이블로 전달하고 각 선의 초기 가시성을 설정합니다. 또한 플롯된 선의 색상과 일치하도록 체크 버튼의 속성을 조정합니다.

lines_by_label = {l.get_label(): l for l in [l0, l1, l2]}
line_colors = [l.get_color() for l in lines_by_label.values()]

rax = fig.add_axes([0.05, 0.4, 0.1, 0.15])
check = CheckButtons(
    ax=rax,
    labels=lines_by_label.keys(),
    actives=[l.get_visible() for l in lines_by_label.values()],
    label_props={'color': line_colors},
    frame_props={'edgecolor': line_colors},
    check_props={'facecolor': line_colors},
)

콜백 함수 정의

체크 버튼에 대한 콜백 함수를 정의해야 합니다. 이 함수는 체크 버튼을 클릭할 때마다 호출됩니다. 이 함수를 사용하여 플롯에서 해당 선의 가시성을 토글합니다.

def callback(label):
    ln = lines_by_label[label]
    ln.set_visible(not ln.get_visible())
    ln.figure.canvas.draw_idle()

check.on_clicked(callback)

플롯 표시

마지막으로, show() 함수를 사용하여 플롯을 표시합니다.

plt.show()

요약

이 랩에서는 Python Matplotlib 에서 체크 버튼을 사용하는 방법을 배웠습니다. 세 개의 서로 다른 사인파가 있는 플롯을 만들었고, 체크 버튼을 사용하여 어떤 파형을 표시할지 선택할 수 있는 기능을 구현했습니다. CheckButtons 함수를 사용하여 버튼을 만들고, 플롯에서 해당 선의 가시성을 토글하는 콜백 함수를 정의했습니다.