Introducción a los gráficos de datos en Python con Matplotlib

Subgráficos

Ya hemos visto cómo crear gráficos. ¿Pero y si queremos dibujar más de un gráfico en el mismo espacio? ¿Por ejemplo para hacer una comparativa de los ahorros de cada personas cada sin sobreponer las líneas en la misma figura? Para esos casos podemos utilizar subgráficos.

La regla de oro para añadir subgráficos es imaginar que estamos dibujando una tabla y cada subgráfico se dibujará en una celda dentro de esa tabla.

Por tanto lo que debemos indicarle a matplotlib es en qué celda debe dibujar cada subgráfico:

# %%
# Dibujos con subgráficos
import numpy as np
import matplotlib.pyplot as plt

plt.subplot(1, 3, 1)  # Tabla 1x3 y dibujaremos en la celda 1
plt.plot(np.random.randint(100, size=[6]), label="Pedro", color="green")
plt.ylim(0, 100)
plt.legend()

plt.subplot(1, 3, 2)  # Tabla 1x3 y dibujaremos en la celda 2
plt.plot(np.random.randint(100, size=[6]), label="Marta", color="red")
plt.ylim(0, 100)
plt.legend()

plt.subplot(1, 3, 3)  # Tabla 1x3 y dibujaremos en la celda 3
plt.plot(np.random.randint(100, size=[6]), label="Ana", color="cyan")
plt.ylim(0, 100)
plt.legend()

plt.show()  # Dibujamos el conjunto

Tened en cuenta que tenréis que dibujar cada subgráfico individualmente con su propia configuración, títulos, etiquetas, leyendas... y finalmente usar plt.show() para mostrar el conjunto de subgráficos.

Podemos hacer otro ejemplo generado dinámicamente utilizando un bucle para que veáis como hacer lo mismo pero con varias filas:

# %%
# Dibujando 9 subgráficos
for i in range(9):
    plt.subplot(3, 3, i+1)  # Tabla 3x3
    plt.plot(np.random.randint(100, size=[6]))
    plt.plot(np.random.randint(100, size=[6]))
    plt.ylim(0, 100)

plt.show()