Saltar al contenido

# graficos-con-python

Gráficos con Python

Volver a la portada del curso
Lectura (Markdown)

Personalización de Gráficos

Sección 2 · Profundizando en Matplotlib

Personalización de gráficos

Un gráfico con los valores por defecto casi nunca es el mejor gráfico posible. Personalizar no significa decorar: significa quitar lo que distrae y destacar lo que importa. Matplotlib permite controlar cada elemento, desde los colores y las fuentes hasta las marcas de los ejes y las anotaciones.

Estilos: un punto de partida coherente

Los estilos cambian de golpe la apariencia general de todos los gráficos: fondo, rejilla, colores y tamaños. Puedes consultar los disponibles con plt.style.available y aplicarlos con plt.style.use. Un estilo es la forma más rápida de lograr consistencia visual entre todos los gráficos de un informe.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

print(plt.style.available[:5])
plt.style.use("ggplot")

Colores, marcadores y tipos de línea

Cada serie se controla con parámetros como color, marker, linestyle y linewidth. Usa el color con intención: un color fuerte para la serie principal y tonos neutros para el contexto guían la mirada hacia lo importante.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 50)
fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(x, np.sin(x), color="#2563EB", linewidth=2.5, label="Serie principal")
ax.plot(x, np.cos(x), color="#94A3B8", linestyle="--", label="Referencia")
ax.set_title("Destacar la serie importante", fontsize=14)
ax.legend(frameon=False)
fig.savefig("series.png", dpi=150)

Ejes, marcas y rejilla

Los límites de los ejes se fijan con set_xlim y set_ylim; las posiciones de las marcas, con set_xticks. Una rejilla suave facilita leer valores sin competir con los datos, y quitar los bordes superior y derecho aligera el gráfico.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.bar(["Lun", "Mar", "Mié", "Jue", "Vie"], [5, 8, 6, 9, 7], color="#22D3EE")
ax.set_ylim(0, 10)
ax.grid(axis="y", alpha=0.3)
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
fig.savefig("barras_limpias.png", dpi=150)

Anotaciones: contar la historia

Una anotación señala el punto que quieres que el lector vea. El método annotate coloca un texto con una flecha que apunta a una coordenada concreta, ideal para marcar un máximo, un cambio de tendencia o un evento.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

meses = list(range(1, 13))
valores = [3, 4, 4, 5, 7, 12, 9, 8, 7, 6, 5, 5]
fig, ax = plt.subplots()
ax.plot(meses, valores, marker="o")
ax.annotate("Pico de junio", xy=(6, 12), xytext=(8, 11.5),
            arrowprops={"arrowstyle": "->"})
fig.savefig("anotacion.png", dpi=150)

Varios gráficos en una figura

Si quieres que todos tus gráficos compartan el mismo tamaño de letra o el mismo grosor de línea sin repetirlo en cada llamada, puedes modificar la configuración global con plt.rcParams, por ejemplo plt.rcParams["font.size"] = 12. Es útil cuando preparas muchas figuras para el mismo informe.

Con plt.subplots(filas, columnas) obtienes una cuadrícula de ejes. El parámetro sharey=True hace que compartan la escala vertical, lo que permite comparar paneles de forma honesta. Al terminar, guarda con dpi alto para que el gráfico se vea nítido en presentaciones.

Errores comunes

  • Usar demasiados colores: más de cinco o seis series en un gráfico lo vuelven ilegible.
  • Recortar el eje vertical de un gráfico de barras sin avisar, lo que exagera las diferencias.
  • Poner títulos y etiquetas con letra diminuta; ajusta fontsize pensando en quien lo verá.
  • Comparar paneles con escalas distintas sin usar sharey.

Cierre

Estilos, colores con intención, ejes limpios y anotaciones precisas convierten un gráfico correcto en uno que comunica. Con estas herramientas estás listo para dar el salto a Seaborn, que aplica muchas de estas buenas prácticas de forma automática.