Al realizar un análisis de datos, a menudo necesitamos comparar la evolución de dos series de datos relacionadas entre sí, pero con escalas completamente diferentes. Por ejemplo:
Un gráfico tradicional con un solo eje Y no puede mostrar correctamente ambos conjuntos de datos debido a las diferencias existentes en las escalas de los mismos. Por ejemplo, mientras la temperatura esté en decenas de grados, las ventas de helados tendrán valores de miles o millones de euros. Por eso, si intentamos superponer estas series, una podría dominar el gráfico, haciendo que el otro pase desapercibido.
Para resolver este tipo de problemas, Matplotlib ofrece la función twinx(), que permite agregar un segundo eje Y al mismo gráfico. Este método es ideal para mostrar datos con diferentes escalas en una única visualización, conservando claridad y precisión.
En esta entrada, explicaremos cómo usar twinx(), implementarlo con ejemplos prácticos y personalizarlo para tus necesidades.
Tabla de contenidos
twinx() de MatplotlibLa función twinx() de Matplotlib permite crear un segundo eje Y en un gráfico existente. Este nuevo eje comparte el eje X con el gráfico original, pero tiene su propia escala independiente. Lo que facilita:
twinx() en MatplotlibAlgunas de las ventajas que ofrece el uso de twinx() de Matplotlib es nuestros gráficos son:
Imaginemos un conjunto de datos que contiene las temperaturas promedio y las ventas de helados por mes en un año. El siguiente código muestra cómo definir los valores y crear una gráfica con estas características.
import matplotlib.pyplot as plt
# Datos ficticios
meses = ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"]
temperaturas = [5, 7, 12, 18, 22, 27, 30, 28, 24, 18, 12, 7]
ventas_helados = [200, 250, 300, 500, 700, 900, 1200, 1100, 800, 400, 300, 250]
# Crear la figura y el primer eje
fig, ax1 = plt.subplots()
# Graficar la temperatura en el primer eje
ax1.plot(meses, temperaturas, color='blue', marker='o', label="Temperatura (°C)")
ax1.set_xlabel("Meses")
ax1.set_ylabel("Temperatura (°C)", color='blue')
ax1.tick_params(axis='y', labelcolor='blue')
# Crear un segundo eje Y compartiendo el eje X
ax2 = ax1.twinx()
ax2.plot(meses, ventas_helados, color='red', marker='s', label="Ventas de helados")
ax2.set_ylabel("Ventas de helados", color='red')
ax2.tick_params(axis='y', labelcolor='red')
# Títulos y leyendas
plt.title("Relación entre temperatura y ventas de helados")
fig.tight_layout()
plt.show() Obteniendo como resultado una gráfica donde el eje Y izquierdo muestra la escala de temperatura (°C), mientras que el eje Y derecho muestra la escala de ventas de helados. Ambos gráficos comparten el eje X con los meses del año, como se puede ver en la siguiente figura.
twinx()Como casi todas las funciones de Matplotlib existen múltiples opciones de personalización para adaptar la salida a nuestras necesidades concretar.
Puedes personalizar los colores, las líneas y los marcadores para diferenciar claramente ambos conjuntos de datos.
# Personalizar estilos ax1.plot(meses, temperaturas, color='blue', linestyle='--', linewidth=2, marker='o', label="Temperatura (°C)") ax2.plot(meses, ventas_helados, color='red', linestyle='-', linewidth=2, marker='s', label="Ventas de helados")
Las leyendas pueden ayudar a interpretar gráficos con múltiples ejes, por eso se puede agregar una leyenda específica a cada eje.
# Agregar leyendas específicas ax1.legend(loc='upper left') ax2.legend(loc='upper right')
El uso de twinx() en Matplotlib es una gran opción para comparar datos con diferentes escalas en un solo gráfico. Desde el análisis de tendencias climáticas hasta la exploración de relaciones económicas, esta herramienta permite crear visualizaciones claras y efectivas que destacan la relación entre variables.
Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…
En un entrada previa explicamos qué son el WOE y el IV y por qué…
Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…
“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…
Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…
Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…
This website uses cookies.