Matplotlib es una biblioteca de Python enfocada en la creación de visualizaciones gráficas. Permite generar gráficos bidimensionales a partir de arreglos, comúnmente integrados con NumPy.
Fundamentos de la Visualización
Para la mayoría de operaciones gráficas, basta con importar el submódulo principal: import matplotlib.pyplot as plt.
Generación de un Gráfico Simple
import matplotlib.pyplot as plt
# Definir datos de ejemplo
valores_x = [0, 1, 2, 3, 4]
valores_y = [0, 1, 4, 9, 16]
# Crear figura y graficar
figura = plt.figure()
plt.plot(valores_x, valores_y)
Para obtener gráficos de alta resolución en formato vectorial, se puede configurar la salida SVG.
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')
valores_x = [0, 1, 2, 3, 4]
valores_y = [0, 1, 4, 9, 16]
figura = plt.figure()
plt.plot(valores_x, valores_y)
Almacenamiento de Gráficos
Use el método .savefig() con una ruta completa y extensión adecuada, como SVG para vectores.
figura.save_fig('C:/Documentos/mi_grafico.svg')
Dos Enfoques para Graficar
Matplotlib ofrece dos estilos: el estilo MATLAB (abreviado) y el orientado a objetos. Ambos son intercambiables.
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')
datos_x = [5, 10, 15, 20, 25]
datos_y = [5, 50, 75, 100, 125]
# Estilo MATLAB
fig1 = plt.figure()
plt.plot(datos_x, datos_y)
# Estilo orientado a objetos
fig2 = plt.figure()
ejes2 = plt.axes()
ejes2.plot(datos_x, datos_y)
Entendiendo Figuras y Ejes
La figura es el lienzo contenedor, mientras que los ejes definen el área del gráfico con sus escalas. Se recomienda crear figuras explícitamente para facilitar el guardado.
Composición de Múltiples Elementos Gráficos
Al trabajar en Jupyter, toda la lógica de creación y renderizado debe permanecer en una sola celda de código.
Trazado de Varias Líneas
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')
eje_x = [1, 2, 3, 4, 5]
serie_a = [2, 4, 6, 8, 10]
serie_b = [10, 8, 6, 4, 2]
serie_c = [5, 5, 5, 5, 5]
figura = plt.figure()
plt.plot(eje_x, serie_a)
plt.plot(eje_x, serie_b)
plt.plot(eje_x, serie_c)
Disposición con Subgráficos
Para organizar múltiples subgráficos, el método orientado a objetos es más conciso.
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')
x_datos = [0, 1, 2, 3, 4]
y1 = [0, 1, 2, 3, 4]
y2 = [4, 3, 2, 1, 0]
y3 = [2, 2, 2, 2, 2]
# Enfoque orientado a objetos con subplots
fig, axes = plt.subplots(3)
axes[0].plot(x_datos, y1)
axes[1].plot(x_datos, y2)
axes[2].plot(x_datos, y3)
Tipos de Gráficos Disponibles
Matplotlib soporta diversas categorías: gráficos de líneas, de malla, estadísticos, contornos y 3D. Los más comunes son los de líneas y los histogramas.
Personalización de Gráficos de Líneas
La función plot() permite ajustar color, estilo de línea, grosor y marcadores.
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')
xi = [0, 1, 2, 3, 4]
yi = [10, 20, 30, 40, 50]
plt.figure()
plt.plot(xi, yi, color='#FF5733', linestyle='--', linewidth=2.5, marker='s', markersize=8)
Visualización de Datos Matriciales
Use imshow() para representar matrices. Se recomienda el estilo MATLAB para más funcionalidades.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')
matriz_datos = np.random.rand(10, 10)
plt.figure()
imagen = plt.imshow(matriz_datos)
plt.colorbar(imagen)
Gráficos Estadísticos: Histogrmaas
Los histogramas son ideales para visualizar distribuciones de datos.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg')
muestra = np.random.normal(loc=5, scale=2, size=1000)
fig, ax = plt.subplots()
ax.hist(muestra, bins=25, alpha=0.7, color='#3498DB', edgecolor='white', histtype='stepfilled')
Ajustes de Propiedades de la Figura
Modificación de Límites de Ejes
Se pueden establecer manualmente con set_xlim/set_ylim o axis.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [10, 20, 30])
ax.set(xlim=(0, 4), ylim=(5, 35), title='Gráfico Ajustado', xlabel='Eje X', ylabel='Eje Y')
Etiquetas y Leyendas
Las leyendas se agregan con .legend() y admiten parámetros como loc y ncol.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 4, 9], label='Cuadrática')
ax.plot([1, 2, 3], [1, 2, 3], label='Lineal')
ax.legend(loc='upper left', frameon=False, ncol=2)
Adición de Cuadrícula
Activa una cuadrícula con .grid(), personalizable en color y estilo.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16])
ax.grid(True, color='gray', linestyle='-.')