Matplotlib Subplot

Matplotlib Logo

Acordeón de los Índices de Matplotlib Subplot




Lección: 9 - Matplotlib Subplot

Display Multiple Plots

📊 Matplotlib te permite mostrar **múltiples gráficos (subplots)** dentro de una misma figura. Esto es muy útil para comparar diferentes conjuntos de datos relacionados o para visualizar distintos aspectos de los mismos datos en paralelo.

Hay varias maneras de crear figuras con múltiples gráficos, siendo la más común el uso de la función `plt.subplot()`, que exploraremos en el siguiente tema. Sin embargo, conceptualmente, cuando trabajas con múltiples gráficos, estás dividiendo la figura en una cuadrícula de filas y columnas, y cada gráfico se dibuja en una celda específica de esa cuadrícula.

Para mostrar múltiples gráficos, generalmente se realizan múltiples llamadas a las funciones de trazado (como `plt.plot()`, `plt.scatter()`, etc.), cada una precedida por una instrucción que define en qué subgráfico se debe dibujar.

💻 Código de Ejemplo: Mostrando múltiples gráficos


import matplotlib.pyplot as plt
import numpy as np

# Datos para el primer gráfico
x1 = np.array([0, 1, 2, 3])
y1 = np.array([3, 8, 1, 10])

# Datos para el segundo gráfico
x2 = np.array([0, 1, 2, 3])
y2 = np.array([6, 2, 7, 5])

# Crear la figura y los subgráficos
plt.figure(figsize=(8, 4)) # Opcional: define el tamaño de la figura

plt.subplot(1, 2, 1) # 1 fila, 2 columnas, primer gráfico
plt.plot(x1, y1)
plt.title("Gráfico 1")

plt.subplot(1, 2, 2) # 1 fila, 2 columnas, segundo gráfico
plt.plot(x2, y2)
plt.title("Gráfico 2")

plt.tight_layout() # Ajusta los espacios entre subgráficos
plt.show()
            

En este ejemplo, hemos creado una figura con dos subgráficos dispuestos en una fila y dos columnas. La función `plt.subplot(1, 2, 1)` activa el primer subgráfico para dibujar, y `plt.subplot(1, 2, 2)` activa el segundo.

📊 Ejemplo Visual Interactivo (Generado con JavaScript)

👆 Este gráfico generado con JavaScript ilustra cómo se pueden mostrar dos gráficos separados dentro de la misma área de visualización.

The subplot() Function

🛠️ La función `plt.subplot()` es la herramienta principal en Matplotlib para crear **subplots** dentro de una figura. Proporciona una forma flexible de definir la disposición de los gráficos.

La función `plt.subplot()` toma tres argumentos enteros:

  1. El número de **filas** en la disposición de los subgráficos.
  2. El número de **columnas** en la disposición de los subgráficos.
  3. El **índice** del subgráfico actual en el que se va a dibujar (empezando desde 1 y aumentando de izquierda a derecha y de arriba a abajo).

Por ejemplo, `plt.subplot(2, 3, 4)` creará una disposición de 2 filas y 3 columnas de subgráficos, y activará el cuarto subgráfico (el de la segunda fila, primera columna) para dibujar.

Después de llamar a `plt.subplot()` para activar un subgráfico específico, cualquier función de trazado posterior (como `plt.plot()`, `plt.title()`, `plt.xlabel()`, etc.) se aplicará a ese subgráfico activo.

💻 Código de Ejemplo: Usando la función subplot()


import matplotlib.pyplot as plt
import numpy as np

# Datos para los gráficos
x = np.array([0, 1, 2, 3])
y1 = np.array([3, 8, 1, 10])
y2 = np.array([6, 2, 7, 5])
y3 = np.array([10, 4, 9, 1])
y4 = np.array([2, 9, 5, 7])

# Crear una figura con 2 filas y 2 columnas de subgráficos
plt.figure(figsize=(10, 8))

plt.subplot(2, 2, 1)
plt.plot(x, y1)
plt.title("Subgráfico 1")

plt.subplot(2, 2, 2)
plt.plot(x, y2)
plt.title("Subgráfico 2")

plt.subplot(2, 2, 3)
plt.plot(x, y3)
plt.title("Subgráfico 3")

plt.subplot(2, 2, 4)
plt.plot(x, y4)
plt.title("Subgráfico 4")

plt.tight_layout()
plt.show()
            

En este ejemplo, hemos creado una figura con una disposición de 2x2 (2 filas, 2 columnas) de subgráficos. Luego, hemos activado cada subgráfico utilizando `plt.subplot()` y hemos dibujado una línea y un título en cada uno.

📊 Ejemplo Visual Interactivo (Generado con JavaScript)

👆 Esta representación con JavaScript muestra cuatro gráficos separados, dispuestos en una cuadrícula de 2x2, simulando el efecto de la función `subplot()` de Matplotlib.

Title

🖋️ Cuando trabajas con múltiples subgráficos, es crucial que cada uno tenga su propio **título** para indicar claramente qué se está visualizando en ese espacio particular. Esto facilita la comprensión individual de cada gráfico dentro de la figura general.

Para añadir un título a un subgráfico específico, primero debes asegurarte de que ese subgráfico esté activo (usando `plt.subplot()` con el índice correcto). Luego, puedes utilizar la función `plt.title()` como lo harías normalmente para un gráfico individual. El título se aplicará al subgráfico actualmente activo.

Puedes personalizar la apariencia del título de cada subgráfico de la misma manera que lo harías con un título de un gráfico individual, utilizando el argumento `fontdict` para controlar la fuente, el tamaño, el color, etc.

💻 Código de Ejemplo: Añadiendo títulos a subgráficos


import matplotlib.pyplot as plt
import numpy as np

# Datos para los gráficos
x = np.array([0, 1, 2, 3])
y1 = np.array([3, 8, 1, 10])
y2 = np.array([6, 2, 7, 5])

# Crear una figura con 1 fila y 2 columnas de subgráficos
plt.figure(figsize=(10, 4))

plt.subplot(1, 2, 1)
plt.plot(x, y1)
plt.title("Primer Gráfico")
plt.xlabel("Eje X")
plt.ylabel("Eje Y")

plt.subplot(1, 2, 2)
plt.plot(x, y2)
plt.title("Segundo Gráfico")
plt.xlabel("Eje X")
plt.ylabel("Eje Y")

plt.tight_layout()
plt.show()
            

En este ejemplo, hemos creado una figura con dos subgráficos. Después de activar cada subgráfico con `plt.subplot()`, hemos utilizado `plt.title()` para asignar un título diferente a cada uno.

📊 Ejemplo Visual Interactivo (Generado con JavaScript)

👆 Esta representación con JavaScript muestra dos gráficos separados, cada uno con su propio título, simulando los títulos de los subgráficos de Matplotlib.

Super Title

🏆 Además de los títulos individuales para cada subgráfico, Matplotlib te permite añadir un **super título** a toda la figura. Este título se coloca generalmente en la parte superior central de la figura y proporciona un encabezado general para el conjunto de subgráficos.

Puedes añadir un super título utilizando la función `plt.suptitle("Título de la Figura")`. Al igual que con los títulos de los subgráficos, puedes personalizar su apariencia con el argumento `fontdict`.

El super título es útil cuando los múltiples subgráficos están relacionados y deseas proporcionar un contexto general para toda la visualización.

💻 Código de Ejemplo: Añadiendo un super título


import matplotlib.pyplot as plt
import numpy as np

# Datos para los gráficos
x = np.array([0, 1, 2, 3])
y1 = np.array([3, 8, 1, 10])
y2 = np.array([6, 2, 7, 5])

# Crear una figura con 1 fila y 2 columnas de subgráficos
plt.figure(figsize=(10, 6))
plt.suptitle("Análisis Comparativo de Datos", fontsize=16, fontweight='bold')

plt.subplot(1, 2, 1)
plt.plot(x, y1)
plt.title("Conjunto de Datos A")
plt.xlabel("Tiempo")
plt.ylabel("Valor")

plt.subplot(1, 2, 2)
plt.plot(x, y2)
plt.title("Conjunto de Datos B")
plt.xlabel("Tiempo")
plt.ylabel("Valor")

plt.tight_layout(rect=[0, 0.03, 1, 0.95]) # Ajusta el layout para evitar el solapamiento con suptitle
plt.show()
            

En este ejemplo, hemos creado una figura con dos subgráficos y hemos añadido un super título utilizando `plt.suptitle()`. El argumento `rect` en `plt.tight_layout()` se utiliza para ajustar el espaciado de los subgráficos para que el super título no se solape con los títulos de los subgráficos.

📊 Ejemplo Visual Interactivo (Generado con JavaScript)

Análisis Comparativo de Datos

👆 Esta representación con JavaScript simula un super título utilizando un elemento `h4` por encima de los dos gráficos separados.




Publicar un comentario

0 Comentarios