Matplotlib ofrece potentes herramientas para crear visualizaciones, y personalizar el tamaño de los subplots es clave para una comunicación efectiva. Este artículo explora tres métodos para crear subplots con tamaños variables en Matplotlib, proporcionando ejemplos y explicaciones claras para cada uno.
Tabla de Contenido
- Usando
gridspec
para Layouts de Subplots Flexibles - Aprovechando
gridspec_kw
para un Control Conciso - Colocación Precisa con
subplot2grid
Usando gridspec
para Layouts de Subplots Flexibles
El módulo matplotlib.gridspec
proporciona el enfoque más flexible para crear subplots de tamaños variables. Permite definir una cuadrícula y luego asignar subplots a regiones específicas de esa cuadrícula, controlando sus tamaños relativos usando height_ratios
y width_ratios
.
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=(10, 6))
gs = gridspec.GridSpec(nrows=2, ncols=2, height_ratios=[2, 1], width_ratios=[1, 2])
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, :]) # Abarcando ambas columnas
ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])
plt.tight_layout()
plt.show()
Este código crea una cuadrícula de 2×2 con la fila superior el doble de alta que la fila inferior y la columna derecha el doble de ancha que la izquierda. Cada subplot se agrega luego a su área designada.
Aprovechando gridspec_kw
para un Control Conciso
Para layouts más simples, el argumento gridspec_kw
dentro de plt.subplots()
ofrece una alternativa más concisa. Integra directamente la funcionalidad de gridspec sin requerir la creación explícita de un objeto gridspec
.
import matplotlib.pyplot as plt
fig, axes = plt.subplots(2, 2, figsize=(10, 6), gridspec_kw={'height_ratios': [2, 1], 'width_ratios': [1, 2]})
axes[0, 0].plot([1, 2, 3], [4, 5, 6])
axes[0, 1].plot([1, 2, 3], [6, 4, 5])
axes[1, 0].plot([1, 2, 3], [2, 4, 1])
axes[1, 1].plot([1, 2, 3], [5, 3, 1])
plt.tight_layout()
plt.show()
Esto logra un resultado similar al ejemplo gridspec
pero con una sintaxis más limpia. Tenga en cuenta que cada subplot aquí ocupa una sola celda; abarcar varias celdas requiere el enfoque gridspec
más flexible.
Colocación Precisa con subplot2grid
La función subplot2grid
proporciona un control preciso sobre la colocación de los subplots usando índices de fila y columna, y los atributos rowspan
y colspan
para definir el tamaño y la posición de cada subplot dentro de la cuadrícula.
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 6))
ax1 = plt.subplot2grid((2, 2), (0, 0), rowspan=1, colspan=1)
ax2 = plt.subplot2grid((2, 2), (0, 1), rowspan=1, colspan=2)
ax3 = plt.subplot2grid((2, 2), (1, 0), rowspan=1, colspan=2)
ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])
plt.tight_layout()
plt.show()
Si bien es potente, subplot2grid
puede volverse menos legible para layouts complejos. Elija el método que mejor se adapte a sus necesidades: gridspec
para flexibilidad, gridspec_kw
para layouts simples concisos, y subplot2grid
para un control preciso sobre las posiciones de los subplots individuales.
Recuerde usar siempre plt.tight_layout()
para evitar elementos superpuestos y asegurar una apariencia limpia y profesional.