4. Personalización de gráficos

Matplotlib no solo permite crear gráficos, sino también personalizarlos para que resulten claros, atractivos y fáciles de interpretar dentro de proyectos realizados con Python.

En este tema revisaremos tres aspectos claves de la personalización: colores y estilos, ajustes de ejes y elementos de apoyo como leyendas, etiquetas y anotaciones.

4.1 Colores, estilos de línea y marcadores

Colores

Los colores se pueden definir por nombre ("red"), abreviatura ("r"), código hexadecimal ("#FF5733") o escala de grises ("0.5", donde 0 es negro y 1 blanco).

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]

plt.plot(x, y1, color="blue", label="Linea Azul")
plt.plot(x, y2, color="#FF5733", label="Linea Naranja")
plt.legend()
plt.show()
Comparación de dos líneas con diferentes colores

Estilos de línea

Algunos estilos frecuentes son "-" (sólido), "--" (punteado), "-." (guiones y puntos) y ":" (puntos).

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]

plt.plot(x, y1, linestyle="--", color="green", label="Linea punteada")
plt.plot(x, y2, linestyle=":", color="purple", label="Linea de puntos")
plt.legend()
plt.show()
Ejemplo de estilos de línea en Matplotlib

Marcadores

Los marcadores resaltan cada punto de la serie. Ejemplos habituales: "o" (círculo), "s" (cuadrado), "^" (triángulo) y "*" (estrella).

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]

plt.plot(x, y1, marker="o", color="red", label="Con circulos")
plt.plot(x, y2, marker="s", color="blue", label="Con cuadrados")
plt.legend()
plt.show()
Uso de marcadores en Matplotlib

💛 Se pueden combinar estilos de manera compacta: plt.plot(x, y, "r--o") genera una línea roja, punteada y con círculos en cada punto.

4.2 Límites de ejes (xlim, ylim)

Ajustar el rango de los ejes permite destacar una región específica de los datos o enfocar una zona de interés.

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4, 5, 6]
y = [0, 1, 4, 9, 16, 25, 36]

plt.plot(x, y, marker="o")
plt.title("Ejemplo con limites de ejes")
plt.xlim(0, 6)   # Limite para el eje X
plt.ylim(0, 40)  # Limite para el eje Y
plt.show()

También es posible invertir los ejes en los casos que lo requieran:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4, 5, 6]
y = [0, 1, 4, 9, 16, 25, 36]

plt.plot(x, y, marker="o")
plt.title("Limites invertidos")
plt.xlim(6, 0)   # Invierte el eje X
plt.ylim(40, 0)  # Invierte el eje Y
plt.show()

4.3 Leyendas, etiquetas y anotaciones

Leyendas (legend)

Las leyendas identifican cada serie del gráfico. Se define un label por serie y luego se llama a plt.legend().

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 2, 3, 4]

plt.plot(x, y1, label="Cuadrados")
plt.plot(x, y2, label="Lineal")
plt.legend(loc="upper left")
plt.title("Leyenda en la esquina superior izquierda")
plt.show()

📌 Posiciones comunes: "upper left", "upper right", "lower left", "lower right", "center".

Etiquetas en los ejes

Las etiquetas aportan contexto a los datos y facilitan la lectura del gráfico.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1, 4, 9, 16]

plt.plot(x, y)
plt.xlabel("Valores de X")
plt.ylabel("Valores de Y")
plt.title("Ejemplo con etiquetas en los ejes")
plt.show()

Anotaciones (annotate)

Las anotaciones resaltan puntos específicos con texto y flechas que guían la atención.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

plt.plot(x, y, marker="o")
plt.title("Anotacion de un punto clave")

plt.annotate(
    "Aqui esta 3",
    xy=(3, 9),
    xytext=(4, 15),
    arrowprops=dict(facecolor="black", shrink=0.05)
)

plt.show()

🔍 La llamada a plt.annotate() recibe el punto de referencia (xy), la posición del texto (xytext) y las propiedades de la flecha (arrowprops).

Resumen del tema

  • Colores, estilos y marcadores ayudan a que los gráficos sean más claros y atractivos.
  • Los límites de ejes (xlim y ylim) permiten enfocar áreas de interés.
  • Leyendas, etiquetas y anotaciones mejoran la interpretación de los datos.