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 ()
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 ()
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 ()
Puoi trovare altri tutorial su Matplotlib qui .