Lección 12 de 29•Mó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.