El sistema basado en eventos generalmente es parte de un conjunto recurrente de patrones. A menudo, se componen de lo siguiente:
- Un evento entrante
- Un mecanismo que se utiliza para responder a un evento.
- Una construcción de bucle (por ejemplo, while loop, listener y el mecanismo de envío de mensajes)
Los eventos que se activan también son un poco más ricos, incluida información como en qué ejes ocurrió el evento. Los eventos también comprenden el sistema de coordenadas de Matplotlib e informan las ubicaciones de los eventos tanto en píxeles como en coordenadas de datos.
Sintaxis:
figure.canvas.mpl_connect( Event_name , función o método de devolución de llamada)
Parámetros:
- Event_name: podría ser cualquiera de la siguiente tabla
- callback_function: Definirá para manejar el evento.
Lista de eventos
Nombre del evento |
clase |
Descripción |
---|---|---|
button_press_event | RatónEvento | Se presiona el botón del ratón |
button_release_event | RatónEvento | Se suelta el botón del ratón |
dibujar_evento | DibujarEvento | Se produce el sorteo del lienzo. |
key_press_event | Evento clave | Se presiona una tecla |
evento_liberación_clave | Evento clave | Se suelta una llave |
evento_notificación_de_movimiento | RatónEvento | El movimiento del ratón |
recoger_evento | ElegirEvento | Se selecciona un objeto en el lienzo. |
redimensionar_evento | Redimensionar evento | El lienzo de la figura se redimensiona |
scroll_event | RatónEvento | La rueda de desplazamiento del ratón se gira |
figure_enter_event | UbicaciónEvento | El ratón entra en una figura. |
axes_enter_event | UbicaciónEvento | El ratón entra en un objeto de ejes. |
axes_leave_event | UbicaciónEvento | El ratón deja un objeto de ejes. |
figure_leave_event | UbicaciónEvento | El ratón deja una figura. |
Nota : que las clases están definidas en matplotlib.backend_bases
EVENTO DEL RATÓN
- button_press_event: este evento implica presionar un botón del mouse
- button_release_event: este evento involucra la liberación del botón del mouse
- scroll_event: este evento implica el desplazamiento del mouse
- motion_notify_event: este evento implica una notificación relacionada con el movimiento del mouse
Ejemplo:
Hemos utilizado el método mpl_connect, al que se debe llamar si desea proporcionar funciones personalizadas de interacción con el usuario junto con sus gráficos. Este método tomará dos argumentos:
- Un valor de string para el evento, que puede ser cualquiera de los valores enumerados en la columna Nombre del evento de la tabla anterior
- Una función o método de devolución de llamada
Python3
# importing the necessary modules from IPython.display import Image import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np import time import sys import random import matplotlib matplotlib.use('nbagg') class MouseEvent: # initialization def __init__(self): (figure, axes) = plt.subplots() axes.set_aspect(1) figure.canvas.mpl_connect('button_press_event', self.press) figure.canvas.mpl_connect('button_release_event', self.release) # start event to show the plot def start(self): plt.show() # display the plot # press event will keep the starting time when u # press mouse button def press(self, event): self.start_time = time.time() # release event will keep the track when you release # mouse button def release(self, event): self.end_time = time.time() self.draw_click(event) # drawing the plot def draw_click(self, event): # size = square (4 * duration of the time button # is keep pressed ) size = 4 * (self.end_time - self.start_time) ** 2 # create a point of size=0.002 where mouse button # clicked on the plot c1 = plt.Circle([event.xdata, event.ydata], 0.002,) # create a circle of radius 0.02*size c2 = plt.Circle([event.xdata, event.ydata], 0.02 * size, alpha=0.2) event.canvas.figure.gca().add_artist(c1) event.canvas.figure.gca().add_artist(c2) event.canvas.figure.show() cbs = MouseEvent() # start the event cbs.start()
Producción :
Ejemplo 2:
Vamos a agregar color usando el método draw_click
Python3
def draw_click(self, event): # you can specified your own color list col = ['magneta', 'lavender', 'salmon', 'yellow', 'orange'] cn = random.randint(0, 5) # size = square (4 * duration of the time button # is keep pressed ) size = 4 * (self.end_time - self.start_time) ** 2 # create a point of size=0.002 where mouse button # clicked on the plot c1 = plt.Circle([event.xdata, event.ydata], 0.002,) # create a circle of radius 0.02*size c2 = plt.Circle([event.xdata, event.ydata], 0.02 * size, alpha=0.2, color=col[cn]) event.canvas.figure.gca().add_artist(c1) event.canvas.figure.gca().add_artist(c2) event.canvas.figure.show()
Producción: