Funciones Interactivas de 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

En este laboratorio, aprenderemos a usar las funciones interactivas en Matplotlib. Estas funciones interactivas incluyen ginput, waitforbuttonpress y la colocación manual de clabel. El propósito de este laboratorio es ayudarte a entender cómo usar estas funciones para crear gráficos interactivos en Matplotlib. Al final de este laboratorio, serás capaz de crear y modificar gráficos usando funciones interactivas en Matplotlib.

Consejos sobre la VM

Una vez que se haya iniciado 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.

Definir un triángulo haciendo clic en tres puntos

En este paso, definiremos un triángulo haciendo clic en tres puntos. Usaremos las funciones ginput y waitforbuttonpress para lograr esto. La función ginput nos permite seleccionar puntos en el gráfico con el mouse, y la función waitforbuttonpress espera un evento de pulsación de un botón.

import time
import matplotlib.pyplot as plt
import numpy as np

def tellme(s):
    print(s)
    plt.title(s, fontsize=16)
    plt.draw()

plt.figure()
plt.xlim(0, 1)
plt.ylim(0, 1)

tellme('You will define a triangle, click to begin')

plt.waitforbuttonpress()

while True:
    pts = []
    while len(pts) < 3:
        tellme('Select 3 corners with mouse')
        pts = np.asarray(plt.ginput(3, timeout=-1))
        if len(pts) < 3:
            tellme('Too few points, starting over')
            time.sleep(1)  ## Wait a second

    ph = plt.fill(pts[:, 0], pts[:, 1], 'r', lw=2)

    tellme('Happy? Key click for yes, mouse click for no')

    if plt.waitforbuttonpress():
        break

    ## Get rid of fill
    for p in ph:
        p.remove()

Contorno según la distancia de los vértices del triángulo

En este paso, construiremos un contorno según la distancia de los vértices del triángulo. Definiremos una función de distancia a partir de puntos individuales y construiremos un contorno según esta función.

## Define a nice function of distance from individual pts
def f(x, y, pts):
    z = np.zeros_like(x)
    for p in pts:
        z = z + 1/(np.sqrt((x - p[0])**2 + (y - p[1])**2))
    return 1/z

X, Y = np.meshgrid(np.linspace(-1, 1, 51), np.linspace(-1, 1, 51))
Z = f(X, Y, pts)

CS = plt.contour(X, Y, Z, 20)

tellme('Use mouse to select contour label locations, middle button to finish')
CL = plt.clabel(CS, manual=True)

Zoom

En este paso, haremos un zoom en el gráfico. Usaremos la función ginput para seleccionar dos vértices del cuadro de zoom y la función waitforbuttonpress para terminar el zoom.

tellme('Now do a nested zoom, click to begin')
plt.waitforbuttonpress()

while True:
    tellme('Select two corners of zoom, middle mouse button to finish')
    pts = plt.ginput(2, timeout=-1)
    if len(pts) < 2:
        break
    (x0, y0), (x1, y1) = pts
    xmin, xmax = sorted([x0, x1])
    ymin, ymax = sorted([y0, y1])
    plt.xlim(xmin, xmax)
    plt.ylim(ymin, ymax)

tellme('All Done!')
plt.show()

Resumen

En este laboratorio, aprendimos a usar funciones interactivas en Matplotlib para crear y modificar gráficos. Usamos ginput, waitforbuttonpress y la colocación manual de clabel para definir un triángulo, hacer un contorno según la distancia de los vértices del triángulo y hacer un zoom en el gráfico. Al usar estas funciones, podemos crear gráficos interactivos que permiten al usuario interactuar con los datos y explorarlos con más detalle.