Data Visualization

Dominando el Tamaño de los Subplots en Matplotlib: Tres Métodos Poderosos

Spread the love

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

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *