So stellen Sie das Seitenverhältnis in Matplotlib ein

Von Fabian
Kategorie: Python
Tags: Matplotlib
Lesezeit: 3 Minuten

Das Seitenverhältnis eines Matplotlib-Diagramms bezieht sich auf den Aspekt der Achsenskalierung, d.h. das Verhältnis von y-Einheit zu x-Einheit.

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

Unter der Haube ändert die set_aspect() Funktion tatsächlich das Daten-Koordinatensystem, aber in der Praxis wollen wir in der Regel das Anzeige-Koordinatensystem ändern.

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

# Definieren Sie das Verhältnis von y-Einheit zu x-Einheit
ratio = 1.0

# x- und y-Grenzen abfragen
x_left, x_right = ax.get_xlim()
y_low, y_high = ax.get_ylim()

# Seitenverhältnis einstellen
ax.set_aspect(abs((x_right-x_left)/(y_low-y_high))*ratio)

Lassen Sie uns ein Beispiel für die praktische Verwendung dieser Funktion durchgehen.

Schritt 1: Erstellen Sie ein einfaches Matplotlib-Diagramm

Lassen Sie uns zunächst mit Matplotlib ein einfaches Liniendiagramm erstellen:

import matplotlib.pyplot as plt

# Matplotlib Plot und Achse definieren
fig, ax = plt.subplots()

# Erstellen Sie ein einfaches Liniendiagramm
ax.plot([0, 10],[0, 20])

#Plot anzeigen
plt.show()

Seitenverhältnis

Schritt 2: Stellen Sie das Seitenverhältnis ein (The Wrong Way)

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

import matplotlib.pyplot as plt

# Matplotlib Plot und Achse definieren
fig, ax = plt.subplots()

# Erstellen Sie ein einfaches Liniendiagramm
ax.plot([0, 10],[0, 20])

# Ein Versuch das Seitenverhältnis auf 1 zu setzen
ax.set_aspect(1)

# Plot anzeigen
plt.show()

Seitenverhältnis

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 (der richtige Weg)

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

import matplotlib.pyplot as plt

# Matplotlib Plot und Achse definieren
fig, ax = plt.subplots()

# Erstellen Sie ein einfaches Liniendiagramm
ax.plot([0, 10],[0, 20])

# Seitenverhältnis auf 1 setzen
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)

# Plot anzeigen
plt.show()

Stellen Sie das Seitenverhältnis des Matplotlib-Diagramms ein

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

Schritt 4: Passen Sie das Seitenverhältnis an Ihre Wünsche an

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

import matplotlib.pyplot as plt

# Matplotlib Plot und Achse definieren
fig, ax = plt.subplots()

# Erstellen Sie ein einfaches Liniendiagramm
ax.plot([0, 10],[0, 20])

# Seitenverhältnis auf 3 setzen
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)

# Plot anzeigen
plt.show()

Seitenverhältnis matplotlib

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

import matplotlib.pyplot as plt

# Matplotlib Plot und Achse definieren
fig, ax = plt.subplots()

# Erstellen Sie ein einfaches Liniendiagramm
ax.plot([0, 10],[0, 20])

# Seitenverhältnis auf .3 setzen
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)

# Plot anzeigen
plt.show()

Seitenverhältnis matplotlib x-Achse länger als y-Achse

Weitere Matplotlib-Tutorials finden Sie hier.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: