Un gráfico con los valores predeterminados de matplotlib comunica los datos, pero no destaca. Personalizar colores, estilos de línea, marcadores y leyendas no es decoración — cada decisión de estilo debería servir un propósito: diferenciar series, resaltar lo importante o facilitar la lectura.
Estilos de línea
Distintos estilos de línea pueden representar distintos tipos de datos:
import matplotlib.pyplot as plt
meses = range(1, 13)
ventas_reales = [30, 28, 35, 42, 50, 48, 55, 52, 45, 40, 38, 60]
proyeccion = [32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54]
plt.plot(meses, ventas_reales, linestyle='-', label='Ventas reales')
plt.plot(meses, proyeccion, linestyle='--', label='Proyección')
plt.title('Ventas vs Proyección')
plt.legend()
plt.show()
Los estilos disponibles:
| Código | Estilo | Uso típico |
|---|---|---|
'-' | Sólida | Datos reales, serie principal |
'--' | Discontinua | Proyecciones, estimaciones |
':' | Punteada | Promedios, referencias |
'-.' | Punto-raya | Series secundarias |
Marcadores
Los marcadores resaltan los puntos individuales de datos en una línea:
import matplotlib.pyplot as plt
dias = [1, 2, 3, 4, 5, 6, 7]
temperatura = [18, 20, 22, 19, 24, 23, 21]
plt.plot(dias, temperatura, marker='o', color='#e17055')
plt.title('Temperatura diaria')
plt.xlabel('Día')
plt.ylabel('°C')
plt.show()
Marcadores comunes:
| Código | Forma |
|---|---|
'o' | Círculo |
's' | Cuadrado |
'^' | Triángulo |
'D' | Diamante |
Son útiles cuando tienes pocos puntos y quieres que cada uno sea visible, o cuando necesitas diferenciar series sin depender solo del color.
Grosor de línea
linewidth controla el grosor. Una línea más gruesa atrae más la atención:
plt.plot(meses, ventas_reales, linewidth=2.5, label='Ventas reales')
plt.plot(meses, proyeccion, linewidth=1, linestyle='--', label='Proyección')
La serie principal más gruesa y la referencia más delgada crea una jerarquía visual clara.
Leyendas
Cuando hay más de una serie, la leyenda es obligatoria:
import matplotlib.pyplot as plt
meses = range(1, 7)
producto_a = [10, 15, 13, 18, 20, 22]
producto_b = [8, 10, 14, 12, 16, 19]
plt.plot(meses, producto_a, label='Producto A', color='#0984e3', marker='o')
plt.plot(meses, producto_b, label='Producto B', color='#e17055', marker='s')
plt.title('Ventas por producto')
plt.xlabel('Mes')
plt.ylabel('Unidades')
plt.legend()
plt.show()
Cada plt.plot() necesita un label= que identifique la serie. Luego plt.legend() muestra el recuadro con los colores y nombres.
Grillas
Las grillas facilitan la lectura de valores exactos:
plt.grid(True, linestyle='--', alpha=0.5)
alpha=0.5 hace la grilla semitransparente para que no compita visualmente con los datos. Siempre usa grillas sutiles — si son más notorias que los datos, distraen.
Errores frecuentes
Personalizar sin propósito: cada elemento visual debe comunicar algo. Si dos líneas son del mismo tipo de dato, dales el mismo estilo. Si una es proyección y otra es dato real, diferencialas con estilo de línea.
Demasiados marcadores con muchos datos: si tienes 100 puntos, los marcadores se superponen y generan ruido. Usa marcadores solo con pocos puntos de datos.
Leyenda que tapa los datos: por defecto matplotlib ubica la leyenda donde menos moleste, pero a veces necesitas moverla con plt.legend(loc='upper left') u otra posición.
Aprende haciendo, no solo leyendo
Leer es el primer paso. El verdadero aprendizaje ocurre cuando practicas con ejercicios reales de Visualización de Datos y recibes corrección inmediata de IA.
Comenzar gratis →