Curso de Python / Visualizar resultados con Matplotlib

Matplotlib crea gráficos a partir de datos, ejes y etiquetas explícitos. Empieza por una comparación con unidades claras y decide si necesitas mostrar una ventana o guardar una imagen según el entorno donde se ejecute el programa.

Elegir la comparación antes del dibujo

Un gráfico de barras permite comparar totales por categoría: las categorías van en el eje horizontal y los importes en el vertical. Una tendencia temporal necesita fechas ordenadas. Ningún gráfico corrige una agrupación incorrecta; verifica primero valores, unidades y datos ausentes.

Instala Matplotlib en el entorno virtual del proyecto:

python -m pip install matplotlib

Este ejemplo utiliza etiquetas en español. Conserva la unidad KRW y los mismos totales del ejercicio de agregación con pandas: 11500 para comida y 2500 para transporte. Traducir una etiqueta no debe cambiar los datos ni convertir las unidades.

Crear y guardar el gráfico completo

Guarda el código como chart.py y ejecuta python chart.py. Trabaja en una carpeta nueva: guardar la imagen reemplaza expense-chart.png si ya existe.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
plt.rcParams.update({"font.size": 18, "axes.titlesize": 22, "axes.labelsize": 20, "xtick.labelsize": 18, "ytick.labelsize": 18})

categories = ["comida", "transporte"]
amounts = [11500, 2500]
fig, ax = plt.subplots(figsize=(7, 4), layout="constrained")
bars = ax.bar(categories, amounts, color=["#2b6cb0", "#d69e2e"])
ax.set_ylabel("Importe (KRW)")
ax.set_title("Gastos por categoría")
ax.set_ylim(0, max(amounts) * 1.2)
ax.bar_label(bars, fmt="%.0f", padding=3)
fig.savefig("expense-chart.png", dpi=160)
plt.close(fig)
print("saved expense-chart.png")
saved expense-chart.png

fig representa la figura completa y ax, el área con ejes y datos. Sus referencias explícitas evitan confundir qué gráfico se modifica cuando existen varias figuras. bar_label añade los importes sobre las barras y el límite vertical deja espacio para leerlos.

Distinguir archivo, ventana y recursos

El backend Agg produce archivos sin interfaz gráfica y resulta adecuado para informes automáticos. Para mostrar una ventana de escritorio, retira la selección de Agg y llama a plt.show() después de guardar; necesitas un backend gráfico disponible. Cierra las figuras tras generarlas repetidamente para liberar recursos.

La guía de backends explica esa elección. Guardar una imagen correctamente no garantiza que sus textos sean legibles: la salida debe inspeccionarse con el tamaño y contexto en que se leerá.

Inspeccionar datos y legibilidad

La siguiente imagen se obtuvo ejecutando el ejemplo con sus etiquetas en español. Ambas barras comparten una escala que empieza en cero.

Gráfico de barras que compara comida, 11500 KRW, y transporte, 2500 KRW

  1. Abre expense-chart.png y comprueba las dos etiquetas numéricas, 11500 y 2500.
  2. Verifica el eje de importe, la unidad KRW y la base cero.
  3. Reduce temporalmente la anchura de la figura, revisa posibles recortes o solapamientos y restaura sus dimensiones.

Utiliza rutas nuevas cuando debas conservar versiones de informes. No trunques el eje ni exageres el área visual para aumentar artificialmente una diferencia. Una figura de 1120 por 640 píxeles puede reducirse en una pantalla pequeña; comprueba que las etiquetas sigan siendo útiles.

Elegir una fuente cuando cambien los caracteres

Para etiquetas en otros sistemas de escritura, como coreano o japonés, puedes necesitar una fuente instalada que incluya sus caracteres. El siguiente ajuste es opcional: en Windows utiliza una ruta habitual de Malgun Gothic; en macOS o Linux debes proporcionar una fuente CJK realmente instalada.

from matplotlib import font_manager
font_path = "C:/Windows/Fonts/malgun.ttf"
font_manager.fontManager.addfont(font_path)
plt.rcParams["font.family"] = font_manager.FontProperties(fname=font_path).get_name()
plt.rcParams["axes.unicode_minus"] = False

Inserta ese ajuste después de importar pyplot y antes de crear la figura. Traduce las etiquetas por separado y comprueba que no aparezcan caracteres ausentes. La referencia de FontProperties explica la selección; verifica también la licencia de la fuente si vas a distribuirla.