Matplotlib avanzato

Due assi y con twinx

Disegna due misure con unità diverse in un solo grafico con un secondo asse y creato da ax.twinx.

Introduzione

La pioggia in millimetri e la temperatura in gradi non condividono una scala: su un solo asse, una delle due sembra piatta. ax.twinx crea un secondo Axes che condivide l'asse x ma ha il proprio asse y a destra.

ax1 disegna le barre della pioggia con l'asse y a sinistra. ax2 = ax1.twinx() condivide i mesi ma ha un nuovo asse y a destra per la temperatura. Colorare ogni etichetta come i suoi dati dice al lettore quale asse appartiene a quale serie. Usa due assi con parsimonia: il confronto tra le serie si fraintende facilmente.

Visualizzatore interattivo

Disattiva il secondo asse y per capire perché serve: su un'unica scala la linea della temperatura resta schiacciata in basso.

Esempio Matplotlib eseguibile

Matplotlib
Esegui codice →
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()
Crea un pulsante Run per questo esempio Il grafico disegnato da questo codice
Due assi y con twinx