Ir al contenido principal

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.