Visualización de datos con Matplotlib
Introducción
La visualización de datos es una herramienta fundamental en el mundo del análisis de datos y la programación científica. Matplotlib es la biblioteca más popular y utilizada para crear gráficos en Python, permitiendo generar visualizaciones estáticas, interactivas y de alta calidad con pocas líneas de código. En este artículo, aprenderemos los conceptos básicos de Matplotlib para crear gráficos efectivos que nos ayuden a entender mejor nuestros datos y a comunicar resultados de manera visual.
Instalación y primeros pasos
Para empezar a utilizar Matplotlib, necesitamos instalarlo:
# Instalación mediante pip
pip install matplotlib
Una vez instalado, podemos importarlo en nuestro código:
# Importación básica
import matplotlib.pyplot as plt
El módulo pyplot
(importado como plt
por convención) proporciona una interfaz similar a MATLAB para crear gráficos de forma rápida.
Creación de gráficos básicos
Gráfico de líneas
El gráfico de líneas es uno de los más comunes y se utiliza para mostrar tendencias a lo largo del tiempo:
# Datos de ejemplo
x = [1, 2, 3, 4, 5]
y = [10, 15, 7, 12, 9]
# Crear el gráfico
plt.figure(figsize=(8, 4)) # Tamaño del gráfico en pulgadas
plt.plot(x, y) # Crear línea
plt.title('Ejemplo de gráfico de líneas') # Título
plt.xlabel('Eje X') # Etiqueta eje X
plt.ylabel('Eje Y') # Etiqueta eje Y
plt.grid(True) # Mostrar cuadrícula
plt.show() # Mostrar el gráfico
Personalización de líneas
Podemos personalizar el aspecto de las líneas:
plt.plot(x, y, color='red', linestyle='--', marker='o', linewidth=2, markersize=8)
plt.show()
Gráfico de barras
Los gráficos de barras son ideales para comparar categorías:
categorias = ['A', 'B', 'C', 'D', 'E']
valores = [23, 45, 56, 78, 32]
plt.figure(figsize=(8, 4))
plt.bar(categorias, valores, color='skyblue')
plt.title('Gráfico de barras')
plt.xlabel('Categorías')
plt.ylabel('Valores')
plt.show()
Gráfico de dispersión (scatter)
Útil para visualizar la relación entre dos variables:
x = [5, 7, 8, 3, 6, 9, 2, 4, 7]
y = [3, 8, 9, 5, 7, 8, 6, 4, 8]
plt.figure(figsize=(8, 6))
plt.scatter(x, y, color='purple', alpha=0.6, s=100) # s controla el tamaño de los puntos
plt.title('Gráfico de dispersión')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.grid(True)
plt.show()
Histogramas
Para visualizar la distribución de un conjunto de datos:
import numpy as np
# Generar datos aleatorios
datos = np.random.normal(170, 10, 250) # 250 valores con media 170 y desviación estándar 10
plt.figure(figsize=(8, 5))
plt.hist(datos, bins=20, color='green', alpha=0.7)
plt.title('Histograma')
plt.xlabel('Valores')
plt.ylabel('Frecuencia')
plt.grid(True)
plt.show()
Múltiples gráficos en una figura
Subgráficos con subplot
Podemos crear varias visualizaciones en una misma figura:
# Datos
x = np.linspace(0, 10, 100) # 100 valores entre 0 y 10
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.exp(-x/10) * np.sin(x)
# Crear figura con subgráficos
plt.figure(figsize=(12, 8))
# Primer subgráfico
plt.subplot(3, 1, 1) # 3 filas, 1 columna, posición 1
plt.plot(x, y1, 'b-')
plt.title('Función seno')
plt.grid(True)
# Segundo subgráfico
plt.subplot(3, 1, 2) # 3 filas, 1 columna, posición 2
plt.plot(x, y2, 'r-')
plt.title('Función coseno')
plt.grid(True)
# Tercer subgráfico
plt.subplot(3, 1, 3) # 3 filas, 1 columna, posición 3
plt.plot(x, y3, 'g-')
plt.title('Función amortiguada')
plt.grid(True)
# Ajustar espaciado
plt.tight_layout()
plt.show()
Gráficos con datos reales
Matplotlib se integra perfectamente con Pandas para visualizar datos de DataFrames:
import pandas as pd
# Crear un DataFrame de ejemplo
datos = {
'mes': ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun'],
'ventas': [150, 200, 180, 220, 250, 230],
'gastos': [140, 150, 145, 160, 170, 180]
}
df = pd.DataFrame(datos)
# Gráfico de líneas con datos del DataFrame
plt.figure(figsize=(10, 6))
plt.plot(df['mes'], df['ventas'], 'o-', label='Ventas')
plt.plot(df['mes'], df['gastos'], 's--', label='Gastos')
plt.title('Ventas y gastos por mes')
plt.xlabel('Mes')
plt.ylabel('Euros')
plt.legend() # Mostrar leyenda
plt.grid(True)
plt.show()
Exportación de gráficos
Podemos guardar nuestros gráficos en diferentes formatos:
# Crear un gráfico
plt.figure(figsize=(8, 6))
plt.plot([1, 2, 3, 4], [10, 20, 25, 30], 'bo-')
plt.title('Gráfico para exportar')
# Guardar en diferentes formatos
plt.savefig('mi_grafico.png', dpi=300) # PNG con alta resolución
plt.savefig('mi_grafico.pdf') # PDF
plt.savefig('mi_grafico.svg') # SVG (vectorial)
Estilo y apariencia
Matplotlib ofrece diferentes estilos predefinidos:
# Ver estilos disponibles
print(plt.style.available)
# Aplicar un estilo
plt.style.use('seaborn-darkgrid')
# Crear gráfico con el estilo aplicado
plt.figure(figsize=(8, 5))
plt.plot([1, 2, 3, 4, 5], [10, 13, 16, 14, 15], 'o-')
plt.title('Gráfico con estilo personalizado')
plt.show()
Gráficos avanzados
Gráfico circular (pie chart)
labels = ['Python', 'Java', 'JavaScript', 'C++', 'PHP']
sizes = [35, 20, 20, 15, 10]
explode = (0.1, 0, 0, 0, 0) # Destacar Python
plt.figure(figsize=(8, 8))
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
plt.axis('equal') # Asegurar que el círculo es redondo
plt.title('Lenguajes de programación populares')
plt.show()
Gráfico de caja (boxplot)
# Generar datos
datos1 = np.random.normal(100, 10, 200)
datos2 = np.random.normal(80, 30, 200)
datos3 = np.random.normal(90, 20, 200)
# Crear boxplot
plt.figure(figsize=(10, 6))
plt.boxplot([datos1, datos2, datos3], labels=['Grupo A', 'Grupo B', 'Grupo C'])
plt.title('Distribución por grupos')
plt.grid(True, linestyle='--', alpha=0.7)
plt.show()
Resumen
Matplotlib es una biblioteca potente y versátil para la visualización de datos en Python. En este artículo hemos explorado los conceptos básicos para crear diferentes tipos de gráficos, personalizarlos y exportarlos. Desde simples gráficos de líneas hasta visualizaciones más complejas como subgráficos múltiples, Matplotlib ofrece todas las herramientas necesarias para representar datos de manera efectiva. A medida que avances en tu aprendizaje, podrás crear visualizaciones cada vez más sofisticadas que te ayudarán a extraer información valiosa de tus datos y a comunicar resultados de manera clara y atractiva.
En los próximos artículos, aplicaremos estos conocimientos en proyectos prácticos que nos permitirán ver la utilidad real de estas herramientas en el desarrollo de aplicaciones y el análisis de datos.