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.
- Abre
expense-chart.pngy comprueba las dos etiquetas numéricas, 11500 y 2500. - Verifica el eje de importe, la unidad KRW y la base cero.
- 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.





