Introducción
Al visualizar datos financieros, es esencial formatear adecuadamente los ejes con símbolos de moneda. Matplotlib es una poderosa biblioteca de Python para crear visualizaciones, pero por defecto, no muestra símbolos de moneda en los ejes.
En este laboratorio, aprenderemos cómo personalizar una gráfica de Matplotlib para mostrar signos de dólar en las etiquetas del eje y. Esta habilidad es valiosa cuando se trabaja con datos financieros, cifras de ventas, presupuestos o cualquier otro conjunto de datos que requiera formato de moneda.
Consejos para la MV
Después de que la máquina virtual (VM) haya terminado de iniciarse, haga clic en la esquina superior izquierda para cambiar a la pestaña Notebook y acceder a Jupyter Notebook para practicar.

Es posible que deba esperar unos segundos para que Jupyter Notebook termine de cargar. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si encuentra algún problema durante el laboratorio, no dude en preguntar a Labby. Por favor, brinde comentarios después de la sesión y resolveremos rápidamente cualquier problema para usted.
Configuración de Bibliotecas y Creación de Datos de Muestra
En este primer paso, importaremos las bibliotecas necesarias y crearemos datos financieros de muestra para nuestra gráfica. Necesitamos importar tanto Matplotlib para la visualización como NumPy para la generación de datos.
En la primera celda de su cuaderno (notebook), ingrese y ejecute el siguiente código para importar las bibliotecas requeridas:
## Import necessary libraries
import matplotlib.pyplot as plt
import numpy as np
## Display plots inline in the notebook
%matplotlib inline
print("Libraries imported successfully!")
Después de ejecutar el código (presione Shift+Enter), debería ver la salida:
Libraries imported successfully!

Ahora, creemos algunos datos financieros de muestra para visualizar. Los datos financieros a menudo representan valores a lo largo del tiempo, por lo que crearemos un conjunto de datos simple que podría representar los ingresos diarios durante un período de tiempo.
En una nueva celda, agregue y ejecute el siguiente código:
## Set a random seed for reproducibility
np.random.seed(42)
## Generate financial data: 30 days of revenue data
days = np.arange(1, 31)
daily_revenue = np.random.uniform(low=1000, high=5000, size=30)
print("Sample of daily revenue data (first 5 days):")
for i in range(5):
print(f"Day {days[i]}: ${daily_revenue[i]:.2f}")
Después de ejecutar este código, verá los primeros 5 días de nuestros datos de ingresos de muestra:
Sample of daily revenue data (first 5 days):
Day 1: $3745.40
Day 2: $3992.60
Day 3: $2827.45
Day 4: $4137.54
Day 5: $1579.63
Este conjunto de datos de muestra representa valores de ingresos diarios entre $1,000 y $5,000 durante un período de 30 días. Usaremos estos datos para crear nuestra gráfica en el siguiente paso.
Creación de una Gráfica Financiera Básica
Ahora que tenemos nuestros datos listos, creemos una gráfica básica para visualizar los ingresos diarios. Comenzaremos con una simple gráfica de línea que muestre la tendencia de los ingresos durante el período de 30 días.
En una nueva celda de su cuaderno (notebook), agregue y ejecute el siguiente código:
## Create a figure and axes
fig, ax = plt.subplots(figsize=(10, 6))
## Plot the daily revenue data
ax.plot(days, daily_revenue, marker='o', linestyle='-', color='blue', linewidth=2, markersize=6)
## Add labels and title
ax.set_xlabel('Day', fontsize=12)
ax.set_ylabel('Revenue', fontsize=12)
ax.set_title('Daily Revenue Over 30 Days', fontsize=14, fontweight='bold')
## Add grid for better readability
ax.grid(True, linestyle='--', alpha=0.7)
## Display the plot
plt.tight_layout()
plt.show()
print("Basic plot created successfully!")
Después de ejecutar este código, debería ver una gráfica de línea que muestra la tendencia de los ingresos diarios. Debería verse algo así (los valores reales pueden variar ligeramente debido a la generación aleatoria):

Analicemos lo que hicimos en este código:
fig, ax = plt.subplots(figsize=(10, 6))- Creamos una figura y ejes con un tamaño de 10×6 pulgadasax.plot(days, daily_revenue, ...)- Graficamos nuestros datos con los días en el eje x y los ingresos en el eje yax.set_xlabel(),ax.set_ylabel(),ax.set_title()- Agregamos etiquetas y un título a nuestra gráficaax.grid()- Agregamos una cuadrícula para que los datos sean más fáciles de leerplt.tight_layout()- Ajustamos el relleno para asegurarnos de que todo quede bien dispuestoplt.show()- Mostramos la gráfica
Note que actualmente el eje y muestra números simples sin signos de dólar. En el siguiente paso, modificaremos nuestra gráfica para mostrar un formato de moneda adecuado en el eje y.
Formateo de las Etiquetas del Eje Y con Signos de Dólar
Ahora que tenemos nuestra gráfica básica, formateemos las etiquetas del eje y para mostrar signos de dólar. Esto hará que nuestros datos financieros sean más legibles y se presenten de manera más profesional.
Para formatear las etiquetas de las marcas (ticks) en el eje y, utilizaremos el módulo ticker de Matplotlib, que proporciona diversas opciones de formato. En concreto, usaremos la clase StrMethodFormatter para crear un formateador personalizado para nuestro eje y.
En una nueva celda de su cuaderno (notebook), agregue y ejecute el siguiente código:
## Import the necessary module for formatting
import matplotlib.ticker as ticker
## Create a figure and axes
fig, ax = plt.subplots(figsize=(10, 6))
## Plot the daily revenue data
ax.plot(days, daily_revenue, marker='o', linestyle='-', color='blue', linewidth=2, markersize=6)
## Format y-axis with dollar signs
formatter = ticker.StrMethodFormatter('${x:,.2f}')
ax.yaxis.set_major_formatter(formatter)
## Add labels and title
ax.set_xlabel('Day', fontsize=12)
ax.set_ylabel('Revenue ($)', fontsize=12)
ax.set_title('Daily Revenue Over 30 Days', fontsize=14, fontweight='bold')
## Add grid for better readability
ax.grid(True, linestyle='--', alpha=0.7)
## Display the plot
plt.tight_layout()
plt.show()
print("Plot with dollar-formatted y-axis created!")
Después de ejecutar este código, debería ver una nueva gráfica con signos de dólar en las etiquetas del eje y.
Expliquemos la parte clave de este código:
formatter = ticker.StrMethodFormatter('${x:,.2f}')
ax.yaxis.set_major_formatter(formatter)
Esto es lo que hace esta cadena de formato:
$- Agrega un signo de dólar al principio de cada etiqueta{x:,.2f}- Formatea el número con:,- Una coma como separador de miles (por ejemplo, 1,000 en lugar de 1000).2f- Dos decimales (por ejemplo, $1,234.56)
Este formateador se aplica a todas las etiquetas de las marcas principales en el eje y. Note cómo la gráfica ahora indica claramente que los valores están en dólares, lo que la hace mucho más adecuada para la visualización de datos financieros.
Mejora de la Gráfica para una Mejor Visualización de Datos Financieros
Ahora que tenemos el formato básico de moneda establecido, mejoremos nuestra gráfica aún más para que sea más útil para el análisis de datos financieros. Realizaremos varias mejoras:
- Una línea horizontal que muestre el ingreso diario promedio
- Anotaciones que resalten los días de ingresos máximo y mínimo
- Parámetros personalizados de las marcas (ticks) para una mejor legibilidad
- Un título y una leyenda más descriptivos
En una nueva celda de su cuaderno (notebook), agregue y ejecute el siguiente código:
## Import the necessary module for formatting
import matplotlib.ticker as ticker
## Create a figure and axes
fig, ax = plt.subplots(figsize=(12, 7))
## Plot the daily revenue data
ax.plot(days, daily_revenue, marker='o', linestyle='-', color='blue',
linewidth=2, markersize=6, label='Daily Revenue')
## Calculate statistics
avg_revenue = np.mean(daily_revenue)
max_revenue = np.max(daily_revenue)
min_revenue = np.min(daily_revenue)
max_day = days[np.argmax(daily_revenue)]
min_day = days[np.argmin(daily_revenue)]
## Add a horizontal line for average revenue
ax.axhline(y=avg_revenue, color='r', linestyle='--', alpha=0.7,
label=f'Average Revenue: ${avg_revenue:.2f}')
## Format y-axis with dollar signs
formatter = ticker.StrMethodFormatter('${x:,.2f}')
ax.yaxis.set_major_formatter(formatter)
## Customize tick parameters
ax.tick_params(axis='both', which='major', labelsize=10)
ax.yaxis.set_major_locator(ticker.MaxNLocator(nbins=10))
ax.xaxis.set_major_locator(ticker.MultipleLocator(base=5))
## Add annotations for max and min revenue
ax.annotate(f'Max: ${max_revenue:.2f}', xy=(max_day, max_revenue),
xytext=(max_day+1, max_revenue+200),
arrowprops=dict(facecolor='black', shrink=0.05, width=1.5))
ax.annotate(f'Min: ${min_revenue:.2f}', xy=(min_day, min_revenue),
xytext=(min_day+1, min_revenue-200),
arrowprops=dict(facecolor='black', shrink=0.05, width=1.5))
## Add labels and title
ax.set_xlabel('Day of Month', fontsize=12)
ax.set_ylabel('Revenue ($)', fontsize=12)
ax.set_title('Daily Revenue Analysis - 30 Day Period', fontsize=14, fontweight='bold')
## Set x-axis limits to show a bit of padding
ax.set_xlim(0, 31)
## Add grid for better readability
ax.grid(True, linestyle='--', alpha=0.7)
## Add legend
ax.legend(loc='upper right', fontsize=10)
## Display the plot
plt.tight_layout()
plt.show()
print("Enhanced financial plot created successfully!")
Después de ejecutar este código, debería ver una gráfica mucho más informativa con:
- Formato de signo de dólar en el eje y
- Una línea horizontal roja discontinua que muestra el ingreso promedio
- Anotaciones que apuntan a los días de ingresos máximo y mínimo
- Marcas (ticks) más limpias con un mejor espaciado
- Una leyenda que muestra lo que representa cada elemento
Expliquemos algunos de los nuevos elementos:
ax.axhline()- Agrega una línea horizontal en el valor y especificado (en este caso, nuestro ingreso promedio)ax.yaxis.set_major_locator()- Controla cuántas marcas (ticks) aparecen en el eje yax.xaxis.set_major_locator()- Establece que el eje x muestre marcas cada 5 díasax.annotate()- Agrega anotaciones de texto con flechas que apuntan a puntos de datos específicosax.legend()- Agrega una leyenda que explica los diferentes elementos de la gráfica
Estas mejoras hacen que la gráfica sea mucho más útil para el análisis financiero al resaltar estadísticas clave y hacer que los datos sean más fáciles de interpretar.
Guardar la Gráfica y Crear una Función Reutilizable
En este último paso, crearemos una función reutilizable para generar gráficas con formato de moneda y guardaremos nuestra visualización en un archivo. Este enfoque facilita aplicar el mismo formato a diferentes conjuntos de datos financieros en el futuro.
En una nueva celda de su cuaderno (notebook), agregue y ejecute el siguiente código:
def create_currency_plot(x_data, y_data, title='Financial Data',
xlabel='X-Axis', ylabel='Amount ($)',
filename=None, show_stats=True):
"""
Create a plot with currency formatting on the y-axis.
Parameters:
-----------
x_data : array-like
Data for the x-axis
y_data : array-like
Data for the y-axis (currency values)
title : str
Title of the plot
xlabel : str
Label for the x-axis
ylabel : str
Label for the y-axis
filename : str, optional
If provided, save the plot to this filename
show_stats : bool
Whether to show statistics (average, min, max)
Returns:
--------
fig, ax : tuple
The figure and axes objects
"""
## Import the necessary module for formatting
import matplotlib.ticker as ticker
## Create a figure and axes
fig, ax = plt.subplots(figsize=(12, 7))
## Plot the data
ax.plot(x_data, y_data, marker='o', linestyle='-', color='blue',
linewidth=2, markersize=6, label='Data')
if show_stats:
## Calculate statistics
avg_value = np.mean(y_data)
max_value = np.max(y_data)
min_value = np.min(y_data)
max_x = x_data[np.argmax(y_data)]
min_x = x_data[np.argmin(y_data)]
## Add a horizontal line for average value
ax.axhline(y=avg_value, color='r', linestyle='--', alpha=0.7,
label=f'Average: ${avg_value:.2f}')
## Add annotations for max and min values
ax.annotate(f'Max: ${max_value:.2f}', xy=(max_x, max_value),
xytext=(max_x+1, max_value+200),
arrowprops=dict(facecolor='black', shrink=0.05, width=1.5))
ax.annotate(f'Min: ${min_value:.2f}', xy=(min_x, min_value),
xytext=(min_x+1, min_value-200),
arrowprops=dict(facecolor='black', shrink=0.05, width=1.5))
## Format y-axis with dollar signs
formatter = ticker.StrMethodFormatter('${x:,.2f}')
ax.yaxis.set_major_formatter(formatter)
## Customize tick parameters
ax.tick_params(axis='both', which='major', labelsize=10)
## Add labels and title
ax.set_xlabel(xlabel, fontsize=12)
ax.set_ylabel(ylabel, fontsize=12)
ax.set_title(title, fontsize=14, fontweight='bold')
## Add grid for better readability
ax.grid(True, linestyle='--', alpha=0.7)
## Add legend
if show_stats:
ax.legend(loc='best', fontsize=10)
## Adjust layout
plt.tight_layout()
## Save the plot if filename is provided
if filename:
plt.savefig(filename, dpi=300, bbox_inches='tight')
print(f"Plot saved as '{filename}'")
return fig, ax
## Use our function to create and save a plot
fig, ax = create_currency_plot(
days,
daily_revenue,
title='Monthly Revenue Report',
xlabel='Day of Month',
ylabel='Daily Revenue ($)',
filename='revenue_plot.png'
)
## Display the plot
plt.show()
print("Function created and plot saved successfully!")
Después de ejecutar este código, debería ver:
- Una gráfica similar a la que creamos en el paso anterior, pero generada utilizando nuestra función personalizada.
- Un mensaje que confirma que la gráfica se ha guardado en un archivo llamado
revenue_plot.png.
La función que creamos:
- Toma datos para los ejes x e y.
- Permite personalizar las etiquetas y el título.
- Tiene una opción para guardar la gráfica en un archivo.
- Puede mostrar u ocultar estadísticas como el promedio, el mínimo y el máximo.
- Devuelve los objetos de la figura y los ejes para una mayor personalización si es necesario.
Esta función reutilizable facilita crear gráficas financieras con un formato consistente en el futuro. Simplemente puede llamar a esta función con diferentes conjuntos de datos, y manejará automáticamente todo el formato de moneda y las anotaciones estadísticas.
Para verificar que nuestra gráfica se haya guardado correctamente, comprobemos si el archivo existe:
import os
if os.path.exists('revenue_plot.png'):
print("Plot file exists! Size:", os.path.getsize('revenue_plot.png'), "bytes")
else:
print("Plot file was not saved correctly.")
Debería ver un mensaje que confirme que el archivo existe y su tamaño.
¡Felicidades! Ha aprendido con éxito cómo formatear gráficas con signos de dólar y crear visualizaciones financieras de aspecto profesional utilizando Matplotlib.
Resumen
En este laboratorio (lab), aprendimos cómo crear gráficas financieras con un formato de moneda adecuado utilizando Matplotlib. Cubrimos varios conceptos importantes:
- Generar y trabajar con datos financieros de muestra.
- Crear gráficas básicas con Matplotlib.
- Formatear las etiquetas del eje y con signos de dólar utilizando la clase
StrMethodFormatter. - Mejorar las gráficas con estadísticas, anotaciones y un estilo mejorado.
- Crear una función reutilizable para generar gráficas con formato de moneda consistente.
Estas habilidades son esenciales para cualquier persona que trabaje con visualización de datos financieros, ya que le permiten crear gráficos profesionales e informativos que comuniquen claramente los valores monetarios.
Las técnicas que aprendiste se pueden aplicar a varios conjuntos de datos financieros, como:
- Informes de ventas e ingresos.
- Análisis de presupuesto.
- Seguimiento del rendimiento de inversiones.
- Análisis de costos.
- Seguimiento de gastos.
Al formatear adecuadamente los ejes con símbolos de moneda, haces que tus visualizaciones sean más intuitivas y profesionales, mejorando la eficacia de la comunicación de tus datos.