0Pricing
Pandas & NumPy Academy · Lección

Etiquetas, títulos y guardado de figuras

Añada etiquetas de ejes, un título, una leyenda y formato a las marcas; después, guarde figuras con calidad de publicación mediante savefig().

Etiquetas, títulos y guardado de figuras es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

Del gráfico a la publicación

Un gráfico solo es eficaz si sus ejes están etiquetados, su título explica la conclusión principal y se guarda con una resolución suficientemente alta para el medio en el que se utilizará. En esta lección se explican los últimos retoques que transforman un gráfico exploratorio rápido en una figura pulida, adecuada para un informe, un dashboard o una publicación académica: etiquetas de ejes, formato de marcas, títulos, leyendas, anotaciones y exportación de archivos.

Etiquetas de ejes con set_xlabel y set_ylabel

Establezca etiquetas descriptivas para los ejes con ax.set_xlabel() y ax.set_ylabel(). Incluya siempre las unidades en la etiqueta (por ejemplo, 'Revenue (USD)' en lugar de solo 'Revenue'). Use fontsize para aumentar el tamaño de las etiquetas en presentaciones y labelpad para añadir espacio entre el eje y el texto de la etiqueta cuando las marcas sean grandes.

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(7, 4))
x = np.arange(1, 13)
y = np.random.randint(100, 500, 12)
ax.plot(x, y, 'o-', color='steelblue')

ax.set_xlabel('Month', fontsize=12, labelpad=8)
ax.set_ylabel('Revenue (USD thousands)', fontsize=12, labelpad=8)
# plt.show()
plt.close()

Títulos con set_title y suptitle

ax.set_title() establece el título sobre un único Axes. Para figuras con varios paneles, fig.suptitle() añade un título compartido sobre todos los subgráficos. Controle el tamaño de la fuente con fontsize y la posición vertical con y (el valor predeterminado es 1.0). Un buen título expresa la idea principal del gráfico, no solo qué representan los ejes; compare 'Monthly Revenue' con 'Revenue Peaked in Q3 and Fell 20% in Q4'.

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot([1,2,3], [1,4,9])
ax1.set_title('Subplot One', fontsize=11)

ax2.bar(['A','B','C'], [3,7,2])
ax2.set_title('Subplot Two', fontsize=11)

# Shared figure title
fig.suptitle('Annual Overview Dashboard', fontsize=14, fontweight='bold', y=1.02)
plt.tight_layout()
plt.close()

Controlar las etiquetas de las marcas

Las etiquetas de las marcas predeterminadas de Matplotlib suelen ser adecuadas, pero a veces necesitará etiquetas personalizadas. Use ax.set_xticks() para especificar las posiciones de las marcas y ax.set_xticklabels() para establecer sus etiquetas. Pase rotation=45 para inclinar las etiquetas largas y evitar que se superpongan. El parámetro ha='right' (alineación horizontal) garantiza que las etiquetas giradas queden ancladas correctamente a su marca.

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
values = np.random.randint(200, 600, 12)

fig, ax = plt.subplots(figsize=(9, 4))
ax.bar(range(12), values, color='steelblue')
ax.set_xticks(range(12))
ax.set_xticklabels(months, rotation=45, ha='right', fontsize=10)
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

Dar formato a los valores de las marcas

Use los formateadores de matplotlib.ticker para mostrar los valores de las marcas en un formato fácil de interpretar. FuncFormatter recibe una función que toma el valor de la marca y devuelve una cadena con formato. Algunos patrones habituales son: separador de miles, símbolo de moneda, signo de porcentaje y notación científica. Aplíquelo con ax.yaxis.set_major_formatter(formatter).

from matplotlib.ticker import FuncFormatter

def millions_fmt(x, pos):
    return f'${x/1e6:.1f}M'

fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [1.2e6, 1.8e6, 2.1e6, 1.9e6], color='steelblue')
ax.yaxis.set_major_formatter(FuncFormatter(millions_fmt))
ax.set_title('Quarterly Revenue')
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

Leyendas con ax.legend()

Llame a ax.legend() para mostrar una leyenda de todos los elementos del gráfico que tengan establecido el parámetro label. Personalícela con loc (posición, por ejemplo, 'upper right' o 'lower left'), ncol (número de columnas), framealpha (transparencia del cuadro) y fontsize. Para colocar la leyenda fuera del área del gráfico, use bbox_to_anchor junto con loc.

fig, ax = plt.subplots(figsize=(7, 4))
for region, color in [('East','steelblue'),('West','coral'),('North','green')]:
    ax.plot(range(12), np.random.randint(100, 400, 12),
            marker='o', label=region, color=color)

ax.legend(loc='upper right', ncol=1, framealpha=0.8, fontsize=10)
ax.set_title('Monthly Sales by Region')
plt.close()

Añadir anotaciones de texto

ax.annotate(text, xy=(x_point, y_point), xytext=(x_text, y_text), arrowprops=...) añade una etiqueta de texto con una flecha opcional que apunta a un punto de datos concreto. Use esta función para destacar valores máximos, anomalías o eventos importantes en un gráfico. El diccionario arrowprops controla el estilo de la flecha: arrowstyle='->' crea una flecha sencilla.

y_vals = np.array([120, 180, 310, 250, 420, 380, 290])
x_vals = np.arange(len(y_vals))
peak_idx = np.argmax(y_vals)

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_vals, y_vals, 'o-', color='steelblue')
ax.annotate(f'Peak: {y_vals[peak_idx]}',
            xy=(peak_idx, y_vals[peak_idx]),
            xytext=(peak_idx - 2, y_vals[peak_idx] + 30),
            arrowprops={'arrowstyle': '->', 'color': 'red'},
            fontsize=10, color='red')
plt.close()

Añadir líneas de referencia horizontales y verticales

ax.axhline(y_value) dibuja una línea horizontal a lo largo de todo el ancho de los Axes, en el valor y especificado. ax.axvline(x_value) dibuja una línea vertical. Ambas aceptan los parámetros color, linestyle y linewidth. Las líneas de referencia se usan habitualmente para marcar objetivos, umbrales o fechas de eventos en gráficos de series temporales.

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randint(100, 400, 10), 'o-', color='steelblue')

# Target line
ax.axhline(y=250, color='red', linestyle='--', lw=1.5, label='Target')

# Event line
ax.axvline(x=5, color='orange', linestyle=':', lw=1.5, label='Campaign start')

ax.legend()
ax.set_title('Revenue vs Target')
plt.close()

Aplicar estilos con temas

Matplotlib incluye varias hojas de estilo integradas que cambian el aspecto general de todas las figuras sin modificar el código: 'seaborn-v0_8-whitegrid', 'fivethirtyeight', 'ggplot', 'bmh', etc. Aplique un estilo con plt.style.use('style_name') al principio del script. Use plt.style.context('style_name') como gestor de contexto para aplicar un estilo solo dentro de un bloque.

# Apply a style globally
plt.style.use('seaborn-v0_8-whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randn(10).cumsum())
ax.set_title('Seaborn Whitegrid Style')
plt.close()

# Reset to default
plt.rcdefaults()

Guardar figuras con savefig()

fig.savefig('filename.png') guarda la figura en un archivo. Parámetros importantes: dpi (puntos por pulgada; use 150 para pantalla y 300 para impresión), bbox_inches='tight' (evita que se recorten las etiquetas) y format (se infiere a partir de la extensión o se especifica explícitamente). Formatos habituales: '.png' (mapa de bits, adecuado para la web), '.pdf' (vectorial, adecuado para impresión) y '.svg' (vectorial, editable en Illustrator).

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(range(10), np.random.randn(10), 'o-')
ax.set_title('Export Example')
ax.set_xlabel('Step')
ax.set_ylabel('Value')

# Save as PNG (screen quality)
fig.savefig('/tmp/chart_screen.png', dpi=150, bbox_inches='tight')

# Save as PDF (print quality)
fig.savefig('/tmp/chart_print.pdf', dpi=300, bbox_inches='tight')

plt.close()
print('Figures saved.')

Ejemplo completo: gráfico pulido para un informe

A continuación se muestra un flujo de trabajo completo que combina todas las técnicas de esta lección: un gráfico de series temporales pulido, con etiquetas de ejes, marcas del eje y con formato, una línea horizontal de objetivo, una anotación en el máximo y exportación a un archivo PNG de alta resolución. Este es el patrón que utilizará para cualquier gráfico que forme parte de un informe o dashboard.

from matplotlib.ticker import FuncFormatter

fig, ax = plt.subplots(figsize=(9, 5))
months = list(range(1, 13))
revenue = [120, 145, 132, 160, 175, 190, 210, 185, 220, 200, 240, 260]
peak = max(revenue)
peak_idx = revenue.index(peak)

ax.plot(months, revenue, 'o-', color='steelblue', lw=2, markersize=6)
ax.axhline(y=180, color='red', ls='--', lw=1.2, label='Target: $180K')
ax.annotate(f'Peak ${peak}K', xy=(peak_idx+1, peak),
            xytext=(peak_idx-1.5, peak+15),
            arrowprops={'arrowstyle': '->'}, fontsize=9)
ax.set_xticks(months)
ax.set_xticklabels(['Jan','Feb','Mar','Apr','May','Jun',
                    'Jul','Aug','Sep','Oct','Nov','Dec'], rotation=45, ha='right')
ax.yaxis.set_major_formatter(FuncFormatter(lambda x,p: f'${x:.0f}K'))
ax.set_title('2024 Monthly Revenue vs Target', fontsize=13, fontweight='bold')
ax.set_ylabel('Revenue')
ax.legend()
plt.tight_layout()
plt.close()

Comprobación rápida

Compruebe cuánto ha comprendido sobre las etiquetas, los títulos y el guardado de figuras de esta lección.

Resumen de la lección

En esta lección ha aprendido que set_xlabel()/set_ylabel()/set_title() añaden texto descriptivo; FuncFormatter da formato a los valores de las marcas como monedas o porcentajes; ax.annotate() añade etiquetas de texto con flechas para destacar puntos de datos importantes; axhline()/axvline() dibujan líneas de referencia; y fig.savefig() con dpi y bbox_inches='tight' produce exportaciones con calidad de publicación. Con esto termina el curso de Fundamentos de Matplotlib; a continuación verá Seaborn para gráficos estadísticos.

Preguntas frecuentes

¿La lección «Etiquetas, títulos y guardado de figuras» es gratis?

Sí — el texto completo de «Etiquetas, títulos y guardado de figuras» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Etiquetas, títulos y guardado de figuras»?

Añada etiquetas de ejes, un título, una leyenda y formato a las marcas; después, guarde figuras con calidad de publicación mediante savefig(). Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Pandas & NumPy Academy?

No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Etiquetas, títulos y guardado de figuras»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?

Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Arquitectura de Figure y Axes
  2. Gráficos de líneas y de dispersión
  3. Gráficos de barras e histogramas
  4. Etiquetas, títulos y guardado de figuras
← Volver a Pandas & NumPy Academy