So legen sie das seitenverhältnis in matplotlib fest


Das Seitenverhältnis eines Matplotlib-Diagramms bezieht sich auf den Aspekt der Achsenskalierung, also das Verhältnis der y-Einheit zur x-Einheit.

Dieses Verhältnis kann mit der Funktion matplotlib.axes.Axes.set_aspect() geändert werden.

Unter der Haube ändert die Funktion set_aspect() tatsächlich das sogenannte Datenkoordinatensystem , in der Praxis möchten wir jedoch normalerweise das Anzeigekoordinatensystem ändern.

Um diese Konvertierung zu erleichtern, können wir diesen Code verwenden:

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

Sehen wir uns ein Beispiel für die praktische Verwendung dieser Funktion an.

Schritt 1: Erstellen Sie ein einfaches Matplotlib-Diagramm

Erstellen wir zunächst ein einfaches Liniendiagramm mit 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 ()

Schritt 2: Stellen Sie das Seitenverhältnis ein (falsch)

Beachten Sie, dass die x-Achse länger ist als die y-Achse. Versuchen wir, das Seitenverhältnis auf 1 zu setzen, das heißt, die x-Achse und die y-Achse sollten gleich sein:

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

Beachten Sie, dass dies nicht wie erwartet funktioniert hat. Die y-Achse ist viel länger als die x-Achse.

Schritt 3: Stellen Sie das Seitenverhältnis ein (richtig)

Der folgende Code zeigt, wie Sie mit einer einfachen Berechnung das richtige Seitenverhältnis festlegen:

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

Stellen Sie die Plotproportionen in Matplotlib ein

Beachten Sie, dass dieser Plot das erwartete Seitenverhältnis aufweist. Die x-Achse und die y-Achse sind gleich lang.

Schritt 4: Passen Sie das Seitenverhältnis nach Ihren Wünschen an

Wenn wir möchten, dass die y-Achse länger als die x-Achse ist, können wir einfach angeben, dass das Seitenverhältnis eine Zahl größer als 1 ist:

 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-Bildformat

Und wenn wir möchten, dass die y-Achse kürzer als die x-Achse ist, können wir einfach angeben, dass das Seitenverhältnis eine Zahl kleiner als 1 ist:

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

Das Seitenverhältnis der x-Achse von Matplotlib ist länger als das der y-Achse

Weitere Matplotlib-Tutorials finden Sie hier .

Einen Kommentar hinzufügen

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