Crea un grafico quadrato con assi uguali in Matplotlib

Suraj Joshi 3 gennaio 2023
  1. set_aspect() per creare un grafico quadrato con assi uguali
  2. Metodo axis() per generare un grafico quadrato
Crea un grafico quadrato con assi uguali in Matplotlib

Possiamo impostare le proporzioni di un grafico usando il metodo set_aspect() per renderlo un grafico quadrato e il metodo axis() può anche essere usato per creare un grafico quadrato con assi uguali in Matplotlib.

set_aspect() per creare un grafico quadrato con assi uguali

Possiamo impostare le proporzioni usando la funzione matplotlib.axes.Axes.set_aspect(). Se usiamo "equal" come rapporto di aspetto nella funzione, otteniamo un grafico con la stessa scala dai punti dati alle unità del grafico per l’asse X e l’asse Y.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(111)

plt.plot(x, y)
plt.xlim(-3, 3)
plt.ylim(-3, 3)

ax.set_aspect("equal", adjustable="box")

plt.xlabel("x")
plt.ylabel("sinx")

plt.show()

grafico quadrato con assi uguali usando set_aspect to equal

plt.xlim(-3, 3)
plt.ylim(-3, 3)

ax.set_aspect("equal")

Imposta sia l’asse X che l’asse Y in modo che abbiano lo stesso intervallo. Quindi ax.set_aspect('equal') imposta entrambi gli assi in modo che siano uguali.

Il metodo precedente produce un grafico quadrato solo quando gli intervalli per entrambi gli assi sono impostati in modo che siano gli stessi. Per generare un grafico quadrato nel caso generale, dobbiamo impostare manualmente le proporzioni utilizzando il seguente comando:

axes.set_aspect(1.0 / axes.get_data_ratio())

axes.get_data_ratio() ottiene il rapporto tra i dati grezzi del grafico. Il valore del suo reciproco viene passato a set_aspect() per rendere gli assi uguali senza impostare manualmente i limiti degli assi.

Codice:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(111)

plt.plot(x, y)

ax.set_aspect(1.0 / ax.get_data_ratio(), adjustable="box")

plt.xlabel("x")
plt.ylabel("sinx")
plt.show()

grafico quadrato con assi uguali usando set_aspect general

Metodo axis() per generare un grafico quadrato

Se passiamo "square" come argomento a matplotlib.pyplot.axis(), viene creato un grafico quadrato in cui gli intervalli occupati da entrambi gli assi sono uguali alla lunghezza del grafico.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)
plt.plot(x, y)
plt.axis("square")
plt.xlabel("x")
plt.ylabel("sinx")
plt.show()

grafico quadrato con assi uguali utilizzando il metodo degli assi

Warning
La gamma di assi in questa soluzione viene selezionata automaticamente. È uguale a ax.set_aspect('equal', adjustable='datalim'). I limiti degli assi espliciti impostati dall’utente non vengono rispettati.
Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Matplotlib Axes