Manejo de eventos en Matplotlib

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:

Publicación traducida automáticamente

Artículo escrito por user0037 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *