Profundizamos en la creación de diseños complejos con Matplotlib, aprovechando la API orientada a objetos dentro de proyectos desarrollados con Python.
Los ejemplos se apoyan en NumPy para generar datos y muestran cómo combinar subplots, ejes compartidos y GridSpec.
7.1 Uso de subplot y subplots
plt.subplot sigue el estilo imperativo clásico, mientras que plt.subplots devuelve la pareja (fig, ax) y simplifica el trabajo con la API moderna.
Ejemplo básico con subplots
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * np.pi, 200)
# Sintaxis moderna: Figure y arreglo de Axes
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 6), layout='constrained')
# 'layout="constrained"' ayuda a evitar solapamientos de textos y etiquetas.
axs[0, 0].plot(x, np.sin(x))
axs[0, 0].set_title("sin(x)")
axs[0, 1].plot(x, np.cos(x), linestyle="--")
axs[0, 1].set_title("cos(x)")
axs[1, 0].plot(x, np.tan(x))
axs[1, 0].set_title("tan(x)")
axs[1, 0].set_ylim(-3, 3) # Acotar tan(x)
axs[1, 1].plot(x, np.sin(x) * np.cos(x), marker="o", markersize=2, linestyle="-")
axs[1, 1].set_title("sin(x)*cos(x)")
fig.suptitle("Cuadrícula 2x2 con subplots", fontsize=12)
plt.show()
⚡ Preferí layout='constrained' (o constrained_layout=True) para que Matplotlib gestione los márgenes.
fig, ax = plt.subplots() devuelve un arreglo de Axes cuando nrows * ncols > 1.
Usá axes.flat para iterar sobre todos los subplots con un solo bucle.
7.2 Compartir ejes (sharex, sharey)
Compartir ejes sincroniza límites, ticks y zoom/pan entre subplots, ideal para comparaciones en la misma escala.