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.
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()

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()

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()

Qué gráfico elegir
- Líneas: evolución en el tiempo.
- Barras: comparar categorías. Usa barras horizontales si los nombres son largos.
- Dispersión (
plt.scatter): relación entre dos variables numéricas. - Histograma (
plt.hist): distribución de un valor.
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.