Python · Guía práctica

Gráficos con Python y matplotlib: guía práctica para principiantes

Matplotlib es la librería base para visualización de datos en Python. Con unas pocas líneas puedes crear gráficos listos para informes, presentaciones o tu propio blog. En esta guía crearás tres gráficos con datos de ejemplo, entenderás cada línea de código y aprenderás a personalizarlos y guardarlos.

Antes de aplicar los ejemplos: los nombres de tablas, columnas, separadores decimales y rutas son ilustrativos. Adáptalos a tu archivo, versión y configuración regional; valida el resultado con una muestra pequeña.

Instalación y primer paso

pip install matplotlib

Después importa el módulo principal, que por convención se llama plt:

import matplotlib.pyplot as plt

Gráfico de líneas: evolución en el tiempo

Es ideal para mostrar tendencias. Aquí representamos las ventas de seis meses:

meses = ["Ene","Feb","Mar","Abr","May","Jun"]
ventas = [120, 150, 170, 210, 190, 240]

plt.figure(figsize=(8, 4))
plt.plot(meses, ventas, marker="o", color="#0b5fd7")
plt.title("Ventas mensuales")
plt.ylabel("Miles de euros")
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig("grafico-lineas.png", dpi=130)
plt.show()
Gráfico de líneas con las ventas mensuales de enero a junio
Resultado del gráfico de líneas.

figsize define el tamaño en pulgadas, marker="o" marca cada punto, alpha controla la transparencia de la cuadrícula y tight_layout() evita que se corten las etiquetas.

Gráfico de barras: comparar categorías

categorias = ["Portátiles","Móviles","Tablets","Accesorios"]
totales = [310, 270, 140, 90]

plt.figure(figsize=(8, 4))
barras = plt.bar(categorias, totales, color="#0b5fd7")
plt.bar_label(barras)
plt.title("Ventas por categoría")
plt.ylabel("Miles de euros")
plt.tight_layout()
plt.show()
Gráfico de barras con ventas por categoría de producto
Las etiquetas sobre las barras se añaden con bar_label.

Varios gráficos en una figura

Con plt.subplots puedes construir un pequeño panel con varios gráficos juntos:

fig, ax = plt.subplots(1, 2, figsize=(10, 4))
ax[0].plot(meses, ventas, marker="o")
ax[0].set_title("Evolución")
ax[1].barh(categorias, totales, color="#e08a00")
ax[1].set_title("Por categoría")
fig.suptitle("Panel de ventas")
plt.tight_layout()
plt.show()
Panel con un gráfico de líneas y uno de barras horizontales
Dos gráficos en la misma figura.

Qué gráfico elegir

Personalización útil

Cambia los ejes con plt.xlim() y plt.ylim(), gira etiquetas largas con plt.xticks(rotation=45) y añade leyenda con label="..." en cada serie seguido de plt.legend(). Para un estilo más limpio prueba plt.style.use("seaborn-v0_8").

Guardar para informes y presentaciones

Usa plt.savefig("grafico.png", dpi=200) antes de plt.show(); si lo llamas después, la imagen se guarda vacía. Con dpi=200 obtienes buena calidad para PowerPoint o Word.

Buenas prácticas

Incluye siempre título y etiquetas de ejes, limita los colores a dos o tres, evita los gráficos circulares con muchas categorías y empieza el eje de las barras en cero para no distorsionar las diferencias.

Revisar el gráfico antes de compartirlo

Comprueba que las unidades estén claras y que el eje vertical no exagere diferencias. En los gráficos de barras, comenzar el eje en cero suele ayudar a comparar magnitudes; en una serie temporal de líneas, un rango más estrecho puede ser válido si se identifica claramente. Si hay muchas categorías, ordénalas y usa barras horizontales para que las etiquetas sigan siendo legibles.

Si guardas la figura para web, prueba plt.savefig("grafico.png", dpi=160, bbox_inches="tight", alt="Ventas mensuales de enero a junio") antes de cerrar la figura. El texto alternativo debe describir el mensaje del gráfico y también aparecer en el HTML que lo muestra. Usa colores con contraste suficiente y no dependas únicamente del color para diferenciar series.