Come impostare le proporzioni in matplotlib


Le proporzioni di un grafico matplotlib si riferiscono all’aspetto del ridimensionamento dell’asse, ovvero al rapporto tra l’unità y e l’unità x.

Questo rapporto può essere modificato utilizzando la funzione matplotlib.axes.Axes.set_aspect() .

Dietro il cofano, la funzione set_aspect() cambia effettivamente quello che viene chiamato il sistema di coordinate dei dati , ma in pratica di solito vogliamo cambiare il sistema di coordinate di visualizzazione .

Per facilitare questa conversione, possiamo usare questo pezzo di codice:

 #define y-unit to x-unit ratio
ratio = 1.0

#get x and y limits
x_left, x_right = ax. get_xlim ()
y_low, y_high = ax. get_ylim ()

#set aspect ratio
ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)

Esaminiamo un esempio di utilizzo pratico di questa funzione.

Passaggio 1: creare un grafico Matplotlib di base

Innanzitutto, creiamo un semplice grafico a linee utilizzando Matplotlib:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#displayplot
plt. show ()

Passaggio 2: imposta le proporzioni (nel modo sbagliato)

Tieni presente che l’asse x è più lungo dell’asse y. Proviamo a impostare le proporzioni su 1, ovvero gli assi x e y dovrebbero essere uguali:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#attempt to set aspect ratio to 1
ax. set_aspect (1)

#displayplot
plt. show () 

Tieni presente che questo non ha funzionato come previsto. L’asse y è molto più lungo dell’asse x.

Passaggio 3: imposta le proporzioni (nel modo giusto)

Il codice seguente mostra come utilizzare un semplice calcolo per impostare le proporzioni corrette:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#set aspect ratio to 1
ratio = 1.0
x_left, x_right = ax. get_xlim ()
y_low, y_high = ax. get_ylim ()
ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)

#displayplot
plt. show () 

Imposta le proporzioni della trama matplotlib

Tieni presente che questo grafico ha le proporzioni che ci aspettavamo. L’asse x e l’asse y hanno la stessa lunghezza.

Passaggio 4: regola le proporzioni come preferisci

Se vogliamo che l’asse y sia più lungo dell’asse x, possiamo semplicemente specificare che le proporzioni siano un numero maggiore di 1:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#set aspect ratio to 3
ratio = 3
x_left, x_right = ax. get_xlim ()
y_low, y_high = ax. get_ylim ()
ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)

#displayplot
plt. show () 

formato immagine matplotlib

E se vogliamo che l’asse y sia più corto dell’asse x, possiamo semplicemente specificare che le proporzioni siano un numero inferiore a 1:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#set aspect ratio to .3
ratio = .3
x_left, x_right = ax. get_xlim ()
y_low, y_high = ax. get_ylim ()
ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)

#displayplot
plt. show () 

Proporzioni dell'asse x di Matplotlib più lunghe dell'asse y

Puoi trovare altri tutorial su Matplotlib qui .

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *