Crear un diagrama de referencia de flechas con Matplotlib

Beginner

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

Introducción

Este tutorial lo guiará a través del proceso de creación de un diagrama de referencia con estilo de flecha utilizando Matplotlib en Python. El diagrama mostrará los diferentes estilos de flecha disponibles en ~.Axes.annotate.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga 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 tenga 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 tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar las bibliotecas necesarias

Importa las bibliotecas necesarias para crear el diagrama de referencia con estilo de flecha.

import inspect
import itertools
import re

import matplotlib.pyplot as plt

import matplotlib.patches as mpatches

Obtener estilos de flecha

Utiliza mpatches.ArrowStyle.get_styles() para obtener todos los estilos de flecha disponibles en ~.Axes.annotate.

styles = mpatches.ArrowStyle.get_styles()

Configurar la figura

Configura la figura utilizando plt.figure() y add_gridspec(). La figura tendrá una cuadrícula de 2 columnas y n filas, donde n es el número de estilos de flecha. Cada celda de la cuadrícula contendrá un estilo de flecha y sus parámetros predeterminados.

ncol = 2
nrow = (len(styles) + 1) // ncol
axs = (plt.figure(figsize=(4 * ncol, 1 + nrow))
     .add_gridspec(1 + nrow, ncol,
                    wspace=.7, left=.1, right=.9, bottom=0, top=1).subplots())
for ax in axs.flat:
    ax.set_axis_off()
for ax in axs[0, :]:
    ax.text(0,.5, "arrowstyle",
            transform=ax.transAxes, size="large", color="tab:blue",
            horizontalalignment="center", verticalalignment="center")
    ax.text(.35,.5, "default parameters",
            transform=ax.transAxes,
            horizontalalignment="left", verticalalignment="center")

Representar los estilos de flecha

Representa cada estilo de flecha en una celda de la cuadrícula, junto con sus parámetros predeterminados. Utiliza ax.annotate() para agregar el nombre del estilo de flecha y sus parámetros predeterminados a la celda.

for ax, (stylename, stylecls) in zip(axs[1:, :].T.flat, styles.items()):
    l, = ax.plot(.25,.5, "ok", transform=ax.transAxes)
    ax.annotate(stylename, (.25,.5), (-0.1,.5),
                xycoords="axes fraction", textcoords="axes fraction",
                size="large", color="tab:blue",
                horizontalalignment="center", verticalalignment="center",
                arrowprops=dict(
                    arrowstyle=stylename, connectionstyle="arc3,rad=-0.05",
                    color="k", shrinkA=5, shrinkB=5, patchB=l,
                ),
                bbox=dict(boxstyle="square", fc="w"))
    ## wrap at every nth comma (n = 1 or 2, depending on text length)
    s = str(inspect.signature(stylecls))[1:-1]
    n = 2 if s.count(',') > 3 else 1
    ax.text(.35,.5,
            re.sub(', ', lambda m, c=itertools.count(1): m.group()
                   if next(c) % n else '\n', s),
            transform=ax.transAxes,
            horizontalalignment="left", verticalalignment="center")

Mostrar el diagrama

Muestra el diagrama de referencia de estilos de flecha utilizando plt.show().

plt.show()

Resumen

En este tutorial, aprendiste cómo crear un diagrama de referencia de estilos de flecha utilizando Matplotlib en Python. Utilizaste mpatches.ArrowStyle.get_styles() para obtener todos los estilos de flecha disponibles en ~.Axes.annotate, configuraste una figura utilizando plt.figure() y add_gridspec(), representaste cada estilo de flecha en una celda de la cuadrícula y mostraste el diagrama utilizando plt.show().