matplotlib 이벤트 처리 기초 (이벤트 귀속, 이벤트 속성)
4595 단어 matplotlib이벤트 처리
matplotlib의 이벤트 처리 모델은 GTK를 바탕으로 matplotlib는 wxpython, tkinter, qt,gtk 등 흔히 볼 수 있는 GUI 백엔드와의 상호작용을 지원합니다.
이벤트 바인딩
matplotlib의 이벤트 연결에는 세 가지 요소가 있습니다.
mpl_connect 방법은 이벤트 관리자라고도 하는데 이것은 Figure Canvas Base 클래스의 방법이다.FigureCanvasBase 클래스는 matplotlib에 속합니다.backend_베이스 모듈은 그림과 백엔드의 밑바닥을 분리하는 역할을 하기 때문에 그림을 그릴 때 각 백엔드 간의 차이를 고려하지 않아도 된다.
canvas의 원뜻 화포,figure의 원뜻 이미지는 이렇게 이해할 수 있다.figure는 모든 보이는 그림 요소의 집합이고,canvas는figure의 용기이며, canvas의 이벤트의 응답, 처리는 모두 canvas를 바탕으로 한다.
다음은 하나의 사례를 통해 이벤트 귀속의 응용을 간단하게 설명한다.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,1])
def onclick(event):
print('%s click: button=%d, x=%d, y=%d, xdata=%f, ydata=%f' %
('double' if event.dblclick else 'single', event.button,
event.x, event.y, event.xdata, event.ydata))
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()
실행 후 이미지 인터페이스에서 마우스를 클릭하면 콘솔에 다음과 같은 출력이 나타납니다.single click: button=1, x=123, y=80, xdata=0.222531, ydata=0.960511
이 사례에서fig는figure 대상입니다.fig의canvas 속성은 현재 이미지가 있는 canvas 대상을 되돌려주고 mpl_connect 방법,'button_press_이벤트는 마우스 왼쪽 단추로 이벤트를 누르고, onclick은 리셋 함수입니다.
이벤트
matplotlib에서 사용하는 이벤트 클래스는 모두 matplotlib에서 계승됩니다.backend_bases.Event, 주요 이벤트는 다음과 같습니다.
이벤트 이름
종류
묘사
‘button_press_event'
MouseEvent
마우스 버튼이 눌리다
‘button_release_event'
MouseEvent
마우스 버튼이 해제됨
‘draw_event'
DrawEvent
캔버스 드로잉
‘key_press_event'
KeyEvent
키보드 버튼이 눌리다
‘key_release_event'
KeyEvent
키보드 버튼 해제
‘motion_notify_event'
MouseEvent
마우스 이동
‘pick_event'
PickEvent
캔버스에서 객체가 선택됨
‘resize_event'
ResizeEvent
도형 캔버스 크기 변경
‘scroll_event'
MouseEvent
마우스 롤러가 굴러가다
‘figure_enter_event'
LocationEvent
새 그래픽으로 마우스 이동
‘figure_leave_event'
LocationEvent
마우스로 도면 분리
‘axes_enter_event'
LocationEvent
새 축 도메인으로 마우스 이동
‘axes_leave_event'
LocationEvent
마우스 비활성화 축 영역
이벤트 속성
matplotlib에서 사용하는 이벤트 클래스는 모두 matplotlib에서 계승되기 때문입니다.backend_bases.Event, 따라서 모든 이벤트는 다음과 같은 세 가지 공통 속성을 가지고 있습니다.
name: 이벤트 이름입니다.
canvas: 이벤트를 생성하는 canvas 대상입니다.
guiEvent: matplotlib 이벤트를 트리거하는 GUI 이벤트입니다. 기본값은 None입니다.
모든 이벤트는 matplotlib에 정의됩니다.backend_베이스 모듈에서 자주 사용하는 마우스 이벤트 Mouse Event, 키보드 이벤트 Key Event는 모두 Location Event 이벤트에서 계승됩니다.LocationEvent 이벤트에는 5개의 속성이 있습니다.
마우스 이벤트 Mouse Event Location Event 이벤트에서 상속되는 5개 속성 외에도 다음 속성이 있습니다.
마우스 이벤트 사례
마우스로 선을 클릭하고 마우스로 인접한 두 점을 직선으로 연결하며 시작점은 0,0이다.
from matplotlib import pyplot as plt
class LineBuilder:
def __init__(self, line):
self.line = line
self.xs = list(line.get_xdata())
self.ys = list(line.get_ydata())
self.cid = line.figure.canvas.mpl_connect('button_press_event', self)
def __call__(self, event):
print('click', event)
if event.inaxes!=self.line.axes: return
self.xs.append(event.xdata)
self.ys.append(event.ydata)
self.line.set_data(self.xs, self.ys)
self.line.figure.canvas.draw()
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title('click to build line segments')
line, = ax.plot([0], [0]) # empty line
linebuilder = LineBuilder(line)
plt.show()
이 matplotlib 이벤트 처리 기초(이벤트 귀속, 이벤트 속성)에 관한 글은 여기에 소개되었습니다. 더 많은 matplotlib 이벤트 처리 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
「수리계획법~선형계획법~」을 참고로 matplotlib와 WolframAlpha로 해보고 싶다.(오리지널 포스트) (참고) 선형 계획법 초입문 작업 중입니다. 정수에만 대응합니다. 공부중. 쉽게 3D 표시할 수 있습니까? 조언을 받으면 도움이됩니다. 완성형?을 찾고 있습니다. 잘 부탁드립니다. 정수해: {{x...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.