Matplotlib GridSpecs anidados

Beginner

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

Introducción

En este laboratorio, aprenderá a usar .GridSpec anidados en Matplotlib para crear una cuadrícula de subtramas con tamaños variables. Esto es útil cuando desea crear un diseño complejo de gráficos y tener control sobre el tamaño y el espaciado de cada gráfico.

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 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 bibliotecas

Primero, necesitamos importar las bibliotecas necesarias. Usaremos matplotlib.pyplot para crear los gráficos y numpy para generar algunos datos para graficar.

import matplotlib.pyplot as plt
import numpy as np

Crear datos

En este paso, crearemos algunos datos para graficar. Usaremos la función squiggle_xy para generar algunas ondas senoidales y cosenoidales con diferentes frecuencias.

def squiggle_xy(a, b, c, d):
    i = np.arange(0.0, 2*np.pi, 0.05)
    return np.sin(i*a)*np.cos(i*b), np.sin(i*c)*np.cos(i*d)

Crear la figura y la cuadrícula externa

A continuación, crearemos la figura y la cuadrícula externa utilizando la función add_gridspec. Crearemos una cuadrícula de 4x4 sin espaciado entre las subtramas.

fig = plt.figure(figsize=(8, 8))
outer_grid = fig.add_gridspec(4, 4, wspace=0, hspace=0)

Crear las cuadrículas internas y las subtramas

En este paso, crearemos las cuadrículas internas y las subtramas utilizando .GridSpec anidados. Recorreremos cada celda de la cuadrícula externa y crearemos una cuadrícula de 3x3 para cada celda.

for a in range(4):
    for b in range(4):
        ## gridspec dentro de gridspec
        inner_grid = outer_grid[a, b].subgridspec(3, 3, wspace=0, hspace=0)
        axs = inner_grid.subplots()  ## Crea todas las subtramas para la cuadrícula interna.
        for (c, d), ax in np.ndenumerate(axs):
            ax.plot(*squiggle_xy(a + 1, b + 1, c + 1, d + 1))
            ax.set(xticks=[], yticks=[])

Mostrar solo las espinas externas

En este paso, eliminaremos las espinas de las subtramas internas y mostraremos solo las espinas externas. Esto hará que la gráfica se vea más limpia.

for ax in fig.get_axes():
    ss = ax.get_subplotspec()
    ax.spines.top.set_visible(ss.is_first_row())
    ax.spines.bottom.set_visible(ss.is_last_row())
    ax.spines.left.set_visible(ss.is_first_col())
    ax.spines.right.set_visible(ss.is_last_col())

Mostrar la gráfica

Finalmente, mostraremos la gráfica utilizando la función show().

plt.show()

Resumen

En este laboratorio, aprendiste cómo utilizar .GridSpec anidados en Matplotlib para crear una cuadrícula de subtramas con tamaños variables. También aprendimos cómo generar datos utilizando numpy y cómo personalizar las espinas de las subtramas. Con este conocimiento, puedes crear diseños complejos de gráficas con un control preciso sobre su tamaño y espaciado.