Python
Matplotlib
¿Qué aprenderás en este módulo?
1. Introducción
Descarga el archivo para seguir la clase en Jupyter:
Descargar Archivo1. Introducción
¿Qué es Matplotlib?
Matplotlib es una biblioteca de Python utilizada para crear gráficos y visualizaciones de datos de manera sencilla y efectiva. La biblioteca principal es matplotlib.pyplot, que proporciona una interfaz similar a la de MATLAB para la creación de gráficos.
En éste módulo introductorio, a través de ejemplos y ejercicios prácticos, aprenderás a crear gráficos que te ayudarán a analizar y presentar datos de mercado de manera efectiva. Practica con tus propios datos financieros para explorar aún más las capacidades de esta librería.
Instalación
Para instalar Matplotlib, puedes usar pip:
pip install matplotlib
Importar librerías
Vamos a importar algunas librerías (matplotlib, numpy y pandas) definiendo sus abreviaturas para poder visualizar algunos ejemplos básicos posteriormente:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
Creación de un gráfico simple
Veámos cómo graficar una sola variable que representa cinco valores de acuerdo a los días de la semana.
# Datos
dias = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes']
valores = [23, 45, 56, 78, 44]
# Creación del gráfico
plt.plot(dias, valores)
plt.title('Valores Semanales')
plt.xlabel('Días')
plt.ylabel('Valores')
plt.show()

Gráfico de barras
# Datos
empresas = ['Empresa A', 'Empresa B', 'Empresa C',
'Empresa D', 'Empresa E']
valores = [50, 80, 90, 70, 60]
# Creación del gráfico de barras
plt.bar(empresas, valores, color='skyblue')
plt.title('Comparación de Valores por Empresa')
plt.xlabel('Empresas')
plt.ylabel('Valores')
plt.show()

Ejercicio 1: Visualización de Precios de Acciones
# Datos de ejemplo (precios ficticios de una acción)
fechas = pd.date_range(start='2023-01-01', periods=100)
# Generar datos de precios aleatorios
precios = np.random.randn(100).cumsum() + 100
# Creación del DataFrame
data = pd.DataFrame({'Fecha': fechas, 'Precio': precios})
# Convertir las columnas a arrays de Numpy
fechas_array = data['Fecha'].values
precios_array = data['Precio'].values
# Visualización de los datos
plt.figure(figsize=(10, 5))
plt.plot(fechas_array, precios_array, label='Acción ABC')
plt.title('Precios Históricos de la Acción')
plt.xlabel('Fecha')
plt.ylabel('Precio')
plt.legend()
plt.grid(True)
plt.show()

Ejercicio 2: Visualización de volumen de transacciones
fechas = ['2023-09-01', '2023-09-02', '2023-09-03',
'2023-09-04', '2023-09-05']
volumenes = [1200, 1500, 1700, 1300, 1600]
plt.bar(fechas, volumenes, color='green')
plt.title('Volumen de Transacciones Diarias')
plt.xlabel('Fecha')
plt.ylabel('Volumen de Transacciones')
plt.show()

Ejercicio 3: comparación de precios entre dos acciones
En este ejercicio agregamos una serie de tiempo (precio de la Acción B representada con una línea discontinua de color naranja).
fechas_ = pd.date_range(start='2023-01-01', periods=100)
precios_A_ = np.random.randn(100).cumsum() + 100
precios_B_ = np.random.randn(100).cumsum() + 90
# Creación del DataFrame
data = pd.DataFrame({'Fecha': fechas_, 'Precio_A': precios_A_,
'Precio_B': precios_B_})
fechas = data['Fecha'].values
precios_A = data['Precio_A'].values
precios_B = data['Precio_B'].values
plt.figure(figsize=(10, 5))
plt.plot(fechas, precios_A, label='Acción A')
plt.plot(fechas, precios_B, label='Acción B', linestyle='--')
plt.title('Comparación de Precios de Dos Acciones')
plt.xlabel('Fecha')
plt.ylabel('Precio')
plt.legend()
plt.grid(True)
plt.show()

Gráfico de sectores (pie chart)
Supongamos que tenemos la distribución sectorial de un índice accionario representado con la sigueinte gráfica de pie.
# Datos
sectores = ['Tecnología', 'Salud', 'Finanzas',
'Energía', 'Consumo']
valores = [30, 25, 20, 15, 10]
# Crear el gráfico de sectores
plt.figure(figsize=(8, 8))
plt.pie(valores, labels=sectores,
autopct='%1.1f%%', startangle=140)
plt.title('Distribución de Inversiones por Sector')
plt.show()

Gráfico de caja (box plot)
# Generar datos de ejemplo
np.random.seed(10)
data = pd.DataFrame({
'Acción_A': np.random.normal(100, 10, 200),
'Acción_B': np.random.normal(90, 15, 200),
'Acción_C': np.random.normal(110, 20, 200)
})
# Crear el gráfico de caja
plt.figure(figsize=(10, 6))
data.boxplot()
plt.title('Distribución de Precios de Acciones')
plt.xlabel('Acciones')
plt.ylabel('Precio')
plt.show()

print(data)
Nótese que en este último ejercicio se está graficando la distribución de los precios de las acciones de las últimas 200 observaciones de cada una de ellas.
