Hoe de beeldverhouding in matplotlib in te stellen
De beeldverhouding van een matplotlib-plot verwijst naar het aspect van asschaling, dat wil zeggen de verhouding van de y-eenheid tot de x-eenheid.
Deze verhouding kan worden gewijzigd met behulp van de functie matplotlib.axes.Axes.set_aspect() .
Onder de motorkap verandert de functie set_aspect() feitelijk wat het datacoördinatensysteem wordt genoemd, maar in de praktijk willen we meestal het weergavecoördinatensysteem wijzigen.
Om deze conversie te vergemakkelijken, kunnen we dit stukje code gebruiken:
#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)
Laten we een voorbeeld bekijken van het gebruik van deze functie in de praktijk.
Stap 1: Maak een basis Matplotlib-plot
Laten we eerst een eenvoudig lijndiagram maken met 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 ()
Stap 2: Stel de beeldverhouding in (verkeerde kant op)
Merk op dat de x-as langer is dan de y-as. Laten we proberen de beeldverhouding in te stellen op 1, dat wil zeggen dat de x-as en de y-as gelijk moeten zijn:
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 ()
Houd er rekening mee dat dit niet werkte zoals verwacht. De y-as is veel langer dan de x-as.
Stap 3: Stel de beeldverhouding in (op de juiste manier)
De volgende code laat zien hoe u een eenvoudige berekening kunt gebruiken om de juiste beeldverhouding in te stellen:
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 ()
Merk op dat deze plot de beeldverhouding heeft die we verwachtten. De x-as en y-as zijn even lang.
Stap 4: Pas de beeldverhouding naar wens aan
Als we willen dat de y-as langer is dan de x-as, kunnen we eenvoudigweg specificeren dat de beeldverhouding een getal groter dan 1 is:
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 ()
En als we willen dat de y-as korter is dan de x-as, kunnen we eenvoudigweg specificeren dat de beeldverhouding een getal kleiner dan 1 is:
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 ()
Je kunt hier meer Matplotlib-tutorials vinden.