Gtk4 를 사용한 Pylab (파이썬 시각화)

Beginner

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

소개

이 랩에서는 pyplot을 사용하여 figure 창을 관리하는 방법을 배우지만, 기본 GTK 위젯에 접근하여 GUI 를 수정하는 방법을 배웁니다. 두 개의 플롯이 있는 figure 를 생성하고 툴바에 버튼을 추가하고 캔버스에 레이블을 추가합니다. 또한 플롯 위로 커서가 이동할 때 커서의 좌표를 표시하는 기능을 추가합니다.

VM 팁

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

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

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

필요한 라이브러리 임포트

import matplotlib
matplotlib.use('GTK4Agg')
import gi
import matplotlib.pyplot as plt

gi.require_version('Gtk', '4.0')
from gi.repository import Gtk

matplotlib, gi, pyplot, 그리고 Gtk를 포함한 필요한 라이브러리를 임포트합니다. matplotlib 의 백엔드를 GTK4 를 사용하도록 설정합니다.

figure 및 플롯 생성

fig, ax = plt.subplots()
ax.plot([1, 2, 3], 'ro-', label='easy as 1 2 3')
ax.plot([1, 4, 9], 'gs--', label='easy as 1 2 3 squared')
ax.legend()

두 개의 서브플롯이 있는 figure 를 생성하고, 두 세트의 데이터를 플롯합니다. 또한 플롯에 범례 (legend) 를 추가합니다.

툴바 (toolbar) 및 vbox 에 접근

manager = fig.canvas.manager
toolbar = manager.toolbar
vbox = manager.vbox

figure canvas manager 의 toolbarvbox 속성에 접근합니다.

툴바에 버튼 추가

button = Gtk.Button(label='Click me')
button.connect('clicked', lambda button: print('hi mom'))
button.set_tooltip_text('Click me for fun and profit')
toolbar.append(button)

레이블 (label) 과 툴팁 (tooltip) 이 있는 버튼을 생성하고, 콘솔에 메시지를 출력하는 함수에 연결합니다. 버튼을 툴바에 추가합니다.

캔버스에 레이블 추가

label = Gtk.Label()
label.set_markup('Drag mouse over axes for position')
vbox.insert_child_after(label, fig.canvas)

레이블을 생성하고 텍스트를 설정합니다. figure canvas 다음에 vbox 에 레이블을 추가합니다.

커서 좌표로 레이블 업데이트

def update(event):
    if event.xdata is None:
        label.set_markup('Drag mouse over axes for position')
    else:
        label.set_markup(
            f'<span color="#ef0000">x,y=({event.xdata}, {event.ydata})</span>')

fig.canvas.mpl_connect('motion_notify_event', update)

플롯 위에서 커서가 움직일 때 커서의 x 및 y 좌표로 레이블을 업데이트하는 함수를 생성합니다. 함수를 캔버스의 motion_notify_event에 연결합니다.

그림 표시

plt.show()

추가된 버튼과 레이블이 있는 그림을 표시합니다.

요약

이 랩에서는 pyplot을 사용하여 그림 창을 관리하는 방법을 배웠지만, 기본 GTK 위젯에 접근하여 GUI 를 수정했습니다. 두 개의 플롯이 있는 그림을 생성하고, 툴바에 버튼을 추가하고, 캔버스에 레이블을 추가했습니다. 또한 플롯 위에서 커서가 움직일 때 커서의 좌표를 표시하는 기능을 추가했습니다. 이 랩은 GTK4 를 사용하여 matplotlib 그림의 GUI 를 사용자 정의하는 방법에 대한 기본적인 이해를 제공합니다.