Data Visualization

Matplotlib Legenden perfekt platzieren

Spread the love

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

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.

Schreibe einen Kommentar

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