Crear una gráfica de triangulación interactiva con Matplotlib

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Esta práctica te guiará a través de la creación de un gráfico de triangulación utilizando Matplotlib. Aprenderás cómo crear un objeto Triangulación, utilizar un objeto TriFinder y configurar la interactividad para resaltar el triángulo debajo del cursor.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haz clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tengas que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y resolveremos rápidamente el problema para ti.

Crear un objeto Triangulación

En primer lugar, necesitamos crear un objeto Triangulación. Utilizaremos la clase Triangulation de matplotlib.tri. En este ejemplo, crearemos un objeto Triangulación con datos aleatorios.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.tri import Triangulation

## Generar datos aleatorios
x = np.random.rand(10)
y = np.random.rand(10)
triang = Triangulation(x, y)

Crear un objeto TriFinder

Para encontrar el triángulo debajo del cursor, necesitamos crear un objeto TriFinder. Podemos obtener el objeto TriFinder predeterminado a partir del objeto Triangulación utilizando el método get_trifinder().

trifinder = triang.get_trifinder()

Configurar la gráfica

Ahora, podemos configurar la gráfica. Utilizaremos plt.subplots() para crear un objeto de figura y eje. Luego, utilizaremos ax.triplot() para trazar la triangulación.

fig, ax = plt.subplots()
ax.triplot(triang)

Resaltar el triángulo debajo del cursor

Queremos resaltar el triángulo debajo del cursor a medida que el mouse se mueve sobre la gráfica. Para hacer esto, crearemos un objeto Polygon que se actualizará con los vértices del triángulo debajo del cursor. Utilizaremos ax.add_patch() para agregar el polígono a la gráfica.

from matplotlib.patches import Polygon

polygon = Polygon([[0, 0], [0, 0], [0, 0]], facecolor='y')
ax.add_patch(polygon)

También crearemos una función update_polygon() que actualizará los vértices del polígono con los vértices del triángulo debajo del cursor.

def update_polygon(tri):
    if tri == -1:
        points = [0, 0, 0]
    else:
        points = triang.triangles[tri]
    xs = triang.x[points]
    ys = triang.y[points]
    polygon.set_xy(np.column_stack([xs, ys]))

Configurar la interactividad

Necesitamos configurar la interactividad para actualizar el triángulo debajo del cursor. Utilizaremos el evento motion_notify_event para detectar cuando el mouse se mueve sobre la gráfica. Crearemos una función on_mouse_move() que obtendrá el triángulo debajo del cursor utilizando el objeto TriFinder, actualizará el polígono con los vértices del triángulo y actualizará el título de la gráfica con el índice del triángulo.

def on_mouse_move(event):
    if event.inaxes is None:
        tri = -1
    else:
        tri = trifinder(event.xdata, event.ydata)
    update_polygon(tri)
    ax.set_title(f'Triángulo {tri}')
    event.canvas.draw()

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

Mostrar la gráfica

Finalmente, podemos mostrar la gráfica utilizando plt.show().

plt.show()

Resumen

En este laboratorio, aprendimos cómo crear una gráfica de triangulación utilizando Matplotlib. Utilizamos las clases Triangulation y TriFinder para crear una triangulación y encontrar el triángulo debajo del cursor. También configuramos la interactividad para resaltar el triángulo debajo del cursor.