Curso Matplotlib

Biblioteca Python para crear gráficos y visualizaciones.

Certificado profesional
Matplotlib
Matplotlib
Librería
6 horas
10 módulos
19 lecciones
17 ejercicios
NumFOCUS
Documentación oficial
Actualizado: 19/04/2026

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

Descripción del curso Matplotlib

Matplotlib es una biblioteca de Python especializada en la generación de gráficos y visualizaciones de datos. Es ampliamente utilizada en ciencia de datos, ingeniería y disciplinas que requieren análisis visual.

¿Qué es Matplotlib?

Matplotlib proporciona una interfaz para crear gráficos estáticos, animados e interactivos en Python. Se inspira en MATLAB, ofreciendo una sintaxis similar para aquellos familiarizados con ese entorno. Permite generar una amplia variedad de gráficos, desde simples gráficos de líneas hasta visualizaciones complejas en 3D.

Instalación de Matplotlib

Para instalar Matplotlib, se utiliza el gestor de paquetes pip:

pip install matplotlib

O, si se utiliza Anaconda:

conda install matplotlib

Arquitectura de Matplotlib

Figure, Axes y Artist

En Matplotlib, todo gráfico se compone de tres niveles jerárquicos:

  • Figure: El contenedor de nivel superior que alberga todo el gráfico. Puede contener uno o múltiples Axes.
  • Axes: El área donde se dibujan los datos. Cada Axes tiene sus propios ejes X e Y, título y leyenda.
  • Artist: Todo lo que se dibuja en la figura (líneas, textos, marcadores) es un Artist.
import matplotlib.pyplot as plt

# Crear figura y ejes usando la API orientada a objetos
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 4, 9])
ax.set_title("Mi primer gráfico")
plt.show()

pyplot vs API orientada a objetos

Matplotlib ofrece dos interfaces principales:

  • pyplot: Interfaz de estilo MATLAB, funciones globales como plt.plot(), ideal para gráficos rápidos.
  • API orientada a objetos: Trabaja directamente con objetos Figure y Axes, recomendada para gráficos complejos y reutilizables.
# Estilo pyplot
plt.plot(x, y)
plt.title("Título")
plt.show()

# Estilo orientado a objetos (recomendado)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title("Título")
plt.show()

Creación de gráficos

Gráfico de líneas

Un gráfico de líneas es útil para mostrar tendencias a lo largo de un eje, generalmente el tiempo.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 17, 20]

plt.plot(x, y, color='steelblue', linewidth=2, marker='o')
plt.xlabel('Tiempo')
plt.ylabel('Valor')
plt.title('Gráfico de líneas simple')
plt.show()

Gráfico de dispersión

Visualiza la relación entre dos variables numéricas.

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(100)
y = x + np.random.randn(100) * 0.5

plt.scatter(x, y, c=y, cmap='viridis', alpha=0.7)
plt.colorbar(label='Valor Y')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.title('Gráfico de dispersión')
plt.show()

Gráfico de barras

Se utiliza para comparar cantidades entre diferentes categorías.

import matplotlib.pyplot as plt

categorias = ['A', 'B', 'C', 'D']
valores = [4, 7, 1, 8]

plt.bar(categorias, valores, color=['#3498db', '#e74c3c', '#2ecc71', '#f39c12'])
plt.xlabel('Categorías')
plt.ylabel('Valores')
plt.title('Gráfico de barras')
plt.show()

Personalización de gráficos

Títulos, etiquetas y leyendas

Es importante añadir títulos y etiquetas para facilitar la interpretación.

plt.title('Título del gráfico', fontsize=16, fontweight='bold')
plt.xlabel('Etiqueta del eje X', fontsize=12)
plt.ylabel('Etiqueta del eje Y', fontsize=12)
plt.legend(loc='upper right', frameon=True)

Estilos y hojas de estilo

Matplotlib ofrece estilos predefinidos que transforman la apariencia de los gráficos.

plt.style.use('seaborn-v0_8')
plt.plot(x, y, color='red', linewidth=2, linestyle='--')

Anotaciones

Para resaltar puntos específicos o añadir notas explicativas.

plt.plot(x, y)
plt.annotate('Punto importante', xy=(2, 15), xytext=(3, 20),
             arrowprops=dict(facecolor='black', shrink=0.05),
             fontsize=12)
plt.show()

Subplots y layouts

Permiten mostrar varios gráficos en una sola figura.

fig, axs = plt.subplots(2, 2, figsize=(10, 8))

axs[0, 0].plot(x, y)
axs[0, 0].set_title('Líneas')

axs[0, 1].bar(categorias, valores)
axs[0, 1].set_title('Barras')

axs[1, 0].scatter(x, y)
axs[1, 0].set_title('Dispersión')

axs[1, 1].hist(np.random.randn(1000), bins=30)
axs[1, 1].set_title('Histograma')

plt.tight_layout()
plt.show()

Gráficos 3D

Matplotlib permite crear gráficos en tres dimensiones mediante el toolkit mpl_toolkits.mplot3d.

from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

ax.plot_surface(X, Y, Z, cmap='viridis')
plt.show()

Guardar gráficos en diferentes formatos

Es posible exportar gráficos a múltiples formatos de archivo.

fig.savefig('grafico.png', dpi=300, bbox_inches='tight')
fig.savefig('grafico.pdf', bbox_inches='tight')
fig.savefig('grafico.svg', bbox_inches='tight')

Integración con Pandas

Matplotlib se integra bien con Pandas para visualizar datos de DataFrames directamente.

import pandas as pd

df = pd.DataFrame({
    'Año': [2018, 2019, 2020, 2021],
    'Ventas': [250, 300, 400, 350]
})

df.plot(x='Año', y='Ventas', kind='bar', figsize=(8, 5))
plt.show()

Animaciones

Matplotlib permite crear animaciones con FuncAnimation.

from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
line, = ax.plot([], [])

def update(frame):
    x = np.linspace(0, 2*np.pi, 100)
    line.set_data(x, np.sin(x + frame/10))
    return line,

ani = FuncAnimation(fig, update, frames=100, interval=50, blit=True)
plt.show()

Mejores prácticas

  • Usar la API orientada a objetos para gráficos complejos y reutilizables.
  • Aplicar tight_layout() o constrained_layout para evitar superposiciones.
  • Elegir colormaps adecuados según el tipo de datos (secuencial, divergente, cualitativo).
  • Exportar en formato vectorial (SVG, PDF) para publicaciones de alta calidad.

Recursos adicionales

Ejercicios de programación de Matplotlib

Explorar más tecnologías

Descubre más tecnologías de programación y desarrollo de software

Alan Sastre - Autor del curso

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Matplotlib es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.