matplotlib
matplotlib es la biblioteca fundamental de trazado de Python. Controla figuras, ejes y cada elemento gráfico para gráficos estáticos de calidad para publicación.
Busca en todas las páginas de la documentación
matplotlib es la biblioteca fundamental de trazado de Python. Controla figuras, ejes y cada elemento gráfico para gráficos estáticos de calidad para publicación.
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 4))
ax.plot([1, 2, 3], [4, 1, 3], label="Serie A")
ax.set(xlabel="Mes", ylabel="Ingresos", title="Rendimiento Q1")
ax.legend()
fig.savefig("q1.png", dpi=150, bbox_inches="tight")
plt.close(fig)Cuándo usar esto:
.plot o visualizaciones personalizadasimport matplotlib.pyplot as plt
import numpy as np
months = np.arange(1, 13)
east = np.array([120, 130, 125, 140, 150, 155, 160, 158, 162, 170, 175, 180])
west = np.array([100, 105, 110, 108, 115, 120, 118, 122, 125, 130, 128, 135])
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4), sharey=True)
ax1.plot(months, east, marker="o", color="#2c7bb6", label="Este")
ax1.plot(months, west, marker="s", color="#fdae61", label="Oeste")
ax1.set(xlabel="Mes", ylabel="Ingresos ($k)", title="Tendencias Regionales")
ax1.legend()
ax1.grid(True, alpha=0.3)
width = 0.35
ax2.bar(months - width/2, east, width, label="Este", color="#2c7bb6")
ax2.bar(months + width/2, west, width, label="Oeste", color="#fdae61")
ax2.set(xlabel="Mes", title="Comparación Lado a Lado")
ax2.legend()
fig.suptitle("Panel de Control de Ingresos 2025", fontsize=14)
fig.tight_layout()
fig.savefig("dashboard.png", dpi=200, bbox_inches="tight")
plt.close(fig)Lo que esto demuestra:
fig y ax explícitossharey para escalas comparablessuptitle, tight_layout y exportación de alta resolución (dpi)Figure contiene los elementos gráficos (artists); Axes proporciona el sistema de coordenadas y los métodos de trazado.plt.plot) funciona bien en notebooks; prefiere la API orientada a objetos en módulos.draw - savefig renderiza fuera de pantalla.matplotlib.rcParams o en hojas de estilo.| Método | Propósito |
|---|---|
plot | Líneas y marcadores |
bar / barh | Comparaciones categóricas |
hist | Distribuciones |
scatter | Dos variables numéricas |
annotate | Anotaciones |
import matplotlib.pyplot as plt
# Backend no interactivo para servidores
import matplotlib
matplotlib.use("Agg")
# Formateo de fechas en el eje x
import matplotlib.dates as mdates
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))fig, ax = plt.subplots() y plt.close(fig).tight_layout olvidado - las etiquetas de los ejes se recortan en los PNG guardados. Solución: fig.tight_layout() o constrained_layout=True al crear la figura.s y aumenta alpha.close - miles de figuras agotan la RAM. Solución: plt.close(fig) en cada iteración.| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| seaborn | Valores predeterminados estadísticos y facetas | Necesitas control de bajo nivel de los elementos gráficos |
| Plotly | Interacción con hover/zoom | Artículos de LaTeX estáticos |
| Altair | Especificaciones de gramática declarativa | Anotaciones muy personalizadas |
| ggplot (plotnine) | Familiaridad con ggplot de R | El equipo está estandarizado en matplotlib |
Figure es el contenedor; Axes es un área de trazado.pyplot es un atajo con estado - conveniente pero frágil en aplicaciones.import matplotlib.pyplot as plt
plt.rcParams.update({"font.size": 12})ax.tick_params(axis="x", rotation=45)ax2 = ax.twinx()
ax2.plot(x, other_series, color="tab:orange")fig, axes = plt.subplots(2, 2, figsize=(8, 8))
axes[0, 1].plot(x, y)ax.plot separadas con etiquetas.Agg en servidores sin cabeza (headless).savefig antes de close.%matplotlib inline para estático; evita DPI altos en notebooks.ax.set_yscale("log")Versiones de la pila: Esta página fue escrita para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, y uv 0.6+.
Revisado por Chris St. John·Última actualización: 16 jul 2026