Matplotlib ist eine leistungsstarke Python-Bibliothek zum Erstellen von Visualisierungen, aber die standardmäßige Legendenplatzierung kann manchmal Ihre Diagramme überladen. Dieser Artikel zeigt effektive Methoden zum Platzieren von Legenden außerhalb des Plotareals für eine verbesserte Lesbarkeit.
Inhaltsverzeichnis
- Verwendung von
bbox_to_anchor
für die Legendenplatzierung - Verhindern von abgeschnittenen Legenden mit
bbox_extra_artists
undbbox_inches
Verwendung von bbox_to_anchor
für die Legendenplatzierung
Das Argument bbox_to_anchor
in der Funktion legend()
bietet eine präzise Positionierung der Legende. Es nimmt ein (x, y)-Tupel an, das die untere linke Ecke der Legende in Figurenkordinaten angibt. (0,0) ist unten links und (1,1) ist oben rechts. Das Argument loc
verfeinert die Platzierung innerhalb dieses Ankerpunkts weiter.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')
ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left') # (1.1,1) nach Bedarf anpassen
ax.set_title('Sinus- und Kosinuswellen')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.tight_layout()
plt.show()
Hier platziert bbox_to_anchor=(1.1, 1)
die Legende leicht rechts vom Diagramm (x=1.1) und oben (y=1). loc='upper left'
richtet die Legende innerhalb dieses Ankers aus. Experimentieren Sie mit verschiedenen loc
-Werten (z. B. ‚upper right‘, ‚lower left‘, ‚center‘) und passen Sie die (x,y)-Koordinaten für eine optimale Positionierung an.
Verhindern von abgeschnittenen Legenden mit bbox_extra_artists
und bbox_inches
Große Legenden oder enge Abbildungen können selbst mit bbox_to_anchor
zu abgeschnittenen Legenden führen. bbox_extra_artists
und bbox_inches
lösen dieses Problem. bbox_extra_artists
beinhaltet die Legende in die Berechnung der Begrenzungsbox zum Speichern, und bbox_inches='tight'
sorgt für enge Ränder und verhindert das Abschneiden.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 500) # Mehr Daten für eine größere Legende
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')
ax.plot(x, y3, label='tan(x)')
leg = ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
fig.savefig('legend_outside.png', bbox_extra_artists=[leg], bbox_inches='tight')
plt.show()
Die Legende wird in leg
gespeichert und dann in bbox_extra_artists
in savefig
übergeben. bbox_inches='tight'
stellt sicher, dass die gesamte Abbildung einschließlich der Legende gespeichert wird. Ersetzen Sie 'legend_outside.png'
durch Ihren gewünschten Dateinamen.
Diese Techniken ermöglichen eine flexible und effektive Legendenplatzierung in Matplotlib und verbessern die Klarheit und die visuelle Attraktivität Ihrer Diagramme. Experimentieren Sie mit verschiedenen Parametern, um das perfekte Layout zu erzielen.