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 () 

Stel plotverhoudingen matplotlib in

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 () 

matplotlib-afbeeldingsformaat

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 () 

Matplotlib x-as aspectverhouding langer dan y-as

Je kunt hier meer Matplotlib-tutorials vinden.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert