twinx e twiny in Matplotlib

Suraj Joshi 15 febbraio 2024
  1. matplotlib.axes.Axes.twinx() in Matplotlib Python
  2. matplotlib.axes.Axes.twiny() in Matplotlib Python
  3. Matplotlib Usa twinx() e twiny() insieme
twinx e twiny in Matplotlib

Questo tutorial spiega come possiamo creare assi gemelli in Matplotlib con asse X o asse Y comune usando matplotlib.axes.Axes.twinx() e matplotlib.axes.Axes.twiny() in Python.

matplotlib.axes.Axes.twinx() in Matplotlib Python

La funzione matplotlib.axes.Axes.twinx() crea altri assi in una figura Matplotlib che condividono il comune asse X con gli assi iniziali.

import matplotlib.pyplot as plt

students = ["Anil", "Sohit", "Hrishav", "Ayush", "Sunil"]
heights_in_cms = [165, 160, 140, 150, 130]

fig, axes = plt.subplots()
fig.set_size_inches(8, 6)
axes.bar(students, heights_in_cms)
y1, y2 = axes.get_ylim()
axes.set_xlabel("Students", fontsize=12)
axes.set_ylabel("Height in cms", fontsize=12)

twin_axes = axes.twinx()
twin_axes.set_ylim(y1 * 0.394, y2 * 0.394)
twin_axes.set_ylabel("Height in Inches", fontsize=12)

fig.suptitle("Plot using matplotlib.axes.Axes.twinx()", fontsize=15)
plt.show()

Produzione:

Stampa utilizzando matplotlib.axes.Axes.twinx()

Crea un grafico a barre dell’altezza degli studenti. Le etichette dell’asse Y a sinistra rappresentano l’altezza degli studenti in cm mentre le etichette dell’asse Y a destra rappresentano l’altezza degli studenti in inches.

In questo caso, creiamo un nuovo asse, twin_axes, condividendo l’asse X con gli axes. L’asse Y di axes ha la sua etichetta impostata su Height in cms mentre l’Asse Y di twin_axes è impostato su Height in Inches.

matplotlib.axes.Axes.twiny() in Matplotlib Python

La funzione matplotlib.axes.Axes.twiny() crea altri assi in una figura Matplotlib che condividono l’asse Y comune con gli assi iniziali.

import matplotlib.pyplot as plt

distance_in_kms = [10, 20, 30, 40, 50]
fare_in_dollars = [2, 3.5, 5, 7, 10]

fig, axes = plt.subplots()
fig.set_size_inches(10, 8)
axes.plot(distance_in_kms, fare_in_dollars)
x1, x2 = axes.get_xlim()
axes.set_xlabel("Distance in kms", fontsize=12)
axes.set_ylabel("Fare ($)", fontsize=12)

twin_axes = axes.twiny()
twin_axes.set_xlim(x1 * 0.62, x2 * 0.62)
twin_axes.set_xlabel("Distance in miles", fontsize=12)

fig.suptitle("Plot using matplotlib.axes.Axes.twiny()", fontsize=15)
plt.show()

Produzione:

Traccia usando matplotlib.axes.Axes.twiny()

Creiamo un nuovo asse, twin_axes, condividendo l’asse Y con gli axes. L’asse X di axes ha la sua etichetta impostata su Distance in kms mentre l’asse X di twin_axes è impostata su Distance in miles.

Matplotlib Usa twinx() e twiny() insieme

import matplotlib.pyplot as plt

distance_in_kms = [10, 20, 30, 40, 50]
fare_in_dollars = [2, 3.5, 5, 7, 10]

fig, axes = plt.subplots()
fig.set_size_inches(10, 8)
axes.plot(distance_in_kms, fare_in_dollars)
x1, x2 = axes.get_xlim()
y1, y2 = axes.get_ylim()
axes.set_xlabel("Distance in kms", fontsize=12)
axes.set_ylabel("Fare ($)", fontsize=12)

twin_axes = axes.twinx().twiny()

twin_axes.set_ylim(y1 * 0.85, y2 * 0.85)
twin_axes.set_ylabel("Fare in Euros", fontsize=12)

twin_axes.set_xlim(x1 * 0.62, x2 * 0.62)
twin_axes.set_xlabel("Distance in miles", fontsize=12)

fig.suptitle("Matplotlib use twinx() and twiny() together", fontsize=15)
plt.show()

Produzione:

Matplotlib usa twinx() e twiny() insieme

Crea una figura Matplotlib con segni di graduazione su tutti i lati della figura. Gli axes controlleranno l’asse X sinistro e l’asse Y inferiore, mentre i twin_axes controlleranno l’asse X destro e l’asse Y superiore.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn