Matplotlib avanzado

Dos ejes y con twinx

Dibuja dos medidas con unidades distintas en un gráfico con un segundo eje y creado con ax.twinx.

Introducción

La lluvia en milímetros y la temperatura en grados no comparten escala: en un solo eje, una de ellas parece plana. ax.twinx crea un segundo Axes que comparte el eje x pero tiene su propio eje y a la derecha.

ax1 dibuja las barras de lluvia con su eje y a la izquierda. ax2 = ax1.twinx() comparte los meses pero tiene un nuevo eje y a la derecha para la temperatura. Colorear cada etiqueta como sus datos indica qué eje corresponde a cada serie. Usa dos ejes con moderación: es fácil malinterpretar cómo se comparan las dos series.

Visualizador interactivo

Desactiva el segundo eje y para ver por qué ayuda: con una sola escala, la línea de temperatura queda aplastada abajo.

Ejemplo de Matplotlib ejecutable

Matplotlib
Ejecutar código →
main.py
import matplotlib.pyplot as plt

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
temperature = [3, 5, 9, 14, 18, 22, 25, 24, 20, 14, 8, 4]
rain = [60, 50, 55, 45, 60, 70, 80, 85, 60, 75, 80, 70]

fig, ax1 = plt.subplots(figsize=(7, 4))
ax1.bar(months, rain, color="tab:blue", alpha=0.4)
ax1.set_ylabel("Rain (mm)", color="tab:blue")

ax2 = ax1.twinx()
ax2.plot(months, temperature, color="tab:red", marker="o")
ax2.set_ylabel("Temperature (°C)", color="tab:red")
ax1.set_title("Climate in one chart")
plt.show()
Obtén un botón Run para este ejemplo El gráfico que dibuja este código
Dos ejes y con twinx