Nota
Haga clic aquí para descargar el código de ejemplo completo
Funciones interactivas #
Esto proporciona ejemplos de usos de funciones interactivas, como ginput, waitforbuttonpress y colocación manual de etiquetas.
Nota
Este ejemplo ejercita las capacidades interactivas de Matplotlib, y esto no aparecerá en la documentación estática. Ejecute este código en su máquina para ver la interactividad.
Puede copiar y pegar partes individuales o descargar el ejemplo completo usando el enlace en la parte inferior de la página.
Defina un triángulo haciendo clic en tres puntos
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()
Ahora contornee según la distancia desde las esquinas del triángulo: solo un ejemplo
# 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)
Ahora haz un 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()