Matplotlib: widget de selección de lazo

Matplotlib nos proporciona una variedad de widgets. En este artículo, aprenderemos sobre la demostración del widget Lasso Selector . Un widget de selección de lazo es una herramienta que nos ayuda a hacer una curva de selección de espacio arbitrario.

Enfoque #1

Agregaremos los ejes manualmente a nuestra trama y luego usaremos la herramienta de widget de selección de lazo.

Implementación:

Python3

# importing matplotlib package
import matplotlib.pyplot as plt
  
# importing LassoSelector from
# Matplotlib.widgets
from matplotlib.widgets import LassoSelector
  
# Creating a figure of the plot
fig = plt.figure()
  
# Add set of axes to figure(Manually)
# left, bottom, width, height (ranging in between 0 and 1)
axes = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  
# Set the label of X-Axis
axes.set_xlabel('X-axis')
  
# Set the label of Y-Axis
axes.set_ylabel('Y-Axis')
  
# Set the title of the plot
axes.set_title('LassoSelector-Demo-Widget')
  
# OnSelect function:Gets triggered
# as soon as the mouse is pressed
# in the plot
def onSelect(geeksforgeeks):
    print(geeksforgeeks)
  
# line defines the color, width and opacity
# of the line to be drawn
line = {'color': 'green', 
        'linewidth': 8, 'alpha': 1}
  
# Three parameters are passed inside the lasso
# Selector class defining the axis, line
# property and on select function
lsso = LassoSelector(ax=axes, onselect=onSelect, 
                     lineprops=line, button=2)
  
# Show the above plot
plt.show()

Producción:

Explicación: 

En el código anterior, estamos importando el paquete matplotlib a nuestro proyecto python junto con la herramienta LassoSelector del módulo matplotlib.widgets . Después de importar los paquetes, creamos una figura (es decir, un lienzo vacío) y le agregamos ejes manualmente. Luego, estamos definiendo una función onSelect() que se activa tan pronto como se presiona el mouse en el gráfico. Luego, estamos creando una línea que define las propiedades de la línea, y luego viene LassoSelector, que nos ayuda a dibujar dentro de los gráficos. Ahora dentro de LassoSelector hay cuatro parámetros, el primero define los ejes que hemos creado, el segundo define el onSelect()función, el tercer parámetro define las propiedades de la línea (línea) y el último parámetro define qué clic del mouse se usará para dibujar la trama (izquierda, derecha, centro) .

Enfoque #2

Aquí, en lugar de agregar ejes manualmente, también podemos hacerlo usando plt.subplots que crea ejes automáticamente.

Python3

# importing matplotlib package
import matplotlib.pyplot as plt
  
# importing LassoSelector from
# Matplotlib.widgets
from matplotlib.widgets import LassoSelector
  
# Creating a Subplot in matplotlib
fig, axes = plt.subplots()
  
# Set the label of X-Axis
axes.set_xlabel('X-axis')
  
# Set the label of Y-Axis
axes.set_ylabel('Y-Axis')
  
# Set the title of the plot
axes.set_title(
    'LassoSelector-Demo-Widget with axes created automatically with subplots')
  
# onSelect function gets triggered
# as soon as the mouse is pressed
# in the plot
def onSelect(geeksforgeeks):
    print(geeksforgeeks)
  
# line defines the color, width and opacity
# of the line to be drawn
line = {'color': 'green',
        'linewidth': 8, 'alpha': 1}
  
# Three parameters are passed inside the lasso
# Selector class defining the axis, line
# property and on select function
lsso = LassoSelector(ax=axes, onselect=onSelect, 
                     lineprops=line, button=2)
  
# If you want to print x and y while pressing
# and releasing mouse, then use mpl_connect
# and replace pressed and released with event
  
# Shows the above plot
plt.show()

Producción:

Explicación:

La misma serie de eventos está teniendo lugar al igual que nuestro enfoque anterior. La única diferencia es que aquí estamos creando ejes automáticamente con la ayuda de plt.subplots() . Si te pasas por el terminal, podrás ver una gran cantidad de coordenadas que son los puntos sobre los que hemos dibujado en la gráfica. 

Publicación traducida automáticamente

Artículo escrito por dassohom5 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 *