Lección 12 de 29Módulo 3: Visualización de Datos

12. Introducción a Matplotlib

Gráficos de línea, barras, scatter y personalización básica

20 minutos

Aprende a crear gráficos profesionales con Matplotlib, la librería de visualización más usada en Python.

Primeros gráficos

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# Datos de ejemplo
meses = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun']
ventas = [45000, 52000, 48000, 61000, 55000, 70000]

# Gráfico de línea básico
plt.figure(figsize=(10, 6))
plt.plot(meses, ventas, marker='o', linewidth=2, markersize=8)
plt.title('Ventas Mensuales 2024', fontsize=16, fontweight='bold')
plt.xlabel('Mes', fontsize=12)
plt.ylabel('Ventas ($)', fontsize=12)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

# Gráfico de barras
plt.figure(figsize=(10, 6))
plt.bar(meses, ventas, color='steelblue', alpha=0.7)
plt.title('Ventas por Mes')
plt.ylabel('Ventas ($)')
plt.show()

# Gráfico de dispersión
x = np.random.rand(50) * 100
y = x * 2 + np.random.randn(50) * 10

plt.figure(figsize=(8, 6))
plt.scatter(x, y, alpha=0.6, s=100, c='coral')
plt.title('Relación Inversión vs ROI')
plt.xlabel('Inversión ($)')
plt.ylabel('ROI (%)')
plt.show()

Múltiples gráficos (subplots)

fig, axes = plt.subplots(2, 2, figsize=(12, 10))

# Subplot 1: Línea
axes[0, 0].plot(meses, ventas, marker='o')
axes[0, 0].set_title('Ventas Mensuales')

# Subplot 2: Barras
axes[0, 1].bar(meses, ventas)
axes[0, 1].set_title('Ventas por Mes')

# Subplot 3: Pie
axes[1, 0].pie(ventas, labels=meses, autopct='%1.1f%%')
axes[1, 0].set_title('Distribución de Ventas')

# Subplot 4: Histograma
datos = np.random.randn(1000)
axes[1, 1].hist(datos, bins=30, alpha=0.7)
axes[1, 1].set_title('Distribución Normal')

plt.tight_layout()
plt.show()

Personalización avanzada

plt.figure(figsize=(12, 6))

# Múltiples líneas
plt.plot(meses, ventas, label='Ventas Reales', marker='o', linewidth=2)
plt.plot(meses, [v * 0.9 for v in ventas], label='Objetivo', linestyle='--', marker='s')

plt.title('Ventas vs Objetivo', fontsize=18, pad=20)
plt.xlabel('Mes', fontsize=14)
plt.ylabel('Monto ($)', fontsize=14)
plt.legend(fontsize=12, loc='best')
plt.grid(True, alpha=0.3, linestyle=':', linewidth=0.8)

# Anotaciones
max_venta = max(ventas)
max_mes = meses[ventas.index(max_venta)]
plt.annotate(f'Máximo: ${max_venta:,}',
             xy=(max_mes, max_venta),
             xytext=(max_mes, max_venta + 5000),
             arrowprops=dict(arrowstyle='->', color='red'),
             fontsize=12, color='red')

plt.tight_layout()
plt.savefig('ventas_2024.png', dpi=300, bbox_inches='tight')
plt.show()

Estilos predefinidos

# Ver estilos disponibles
print(plt.style.available)

# Usar un estilo
plt.style.use('seaborn-v0_8-darkgrid')
# o 'ggplot', 'fivethirtyeight', etc.

plt.figure(figsize=(10, 6))
plt.plot(meses, ventas, marker='o')
plt.title('Ventas con Estilo Seaborn')
plt.show()

# Resetear a default
plt.style.use('default')

Resumen de la lección

plt.plot() crea gráficos de línea ✅ plt.bar() crea gráficos de barras ✅ plt.scatter() crea gráficos de dispersión ✅ subplots() permite múltiples gráficos en una figura ✅ Personaliza con title, xlabel, ylabel, legend, grid ✅ Guarda gráficos con savefig()


🎯 Próxima lección: 13. Gráficos Avanzados con Seaborn

En la siguiente lección crearás visualizaciones estadísticas profesionales con Seaborn. 🚀

¿Completaste esta lección?

Marca esta lección como completada. Tu progreso se guardará en tu navegador.