Matplotlib legend()-Funktion
Matplotlib-Referenzdokumentation
legend()Wird verwendet, um einem Diagramm eine Legende hinzuzufügen, damit Leser die Bedeutung jeder Kurve oder Datengruppe erkennen können.
Funktionsdefinition
matplotlib.pyplot.legend(*args, **kwargs) Axes.legend(*args, **kwargs) Figure.legend(*args, **kwargs)
Allgemeine Parameterbeschreibungen
| Parameter | Type | Beschreibung |
|---|---|---|
| loc | str oder int | Legendenposition: 'best' (automatisch), 'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'upper center', 'center', 'outside' |
| bbox_to_anchor | tuple | Legenden-Ankerkoordinaten, verwendet mit loc für präzise Positionierung. Zum Beispiel platziert (1.05, 1) die Legende in der oberen rechten Ecke außerhalb der Axes. |
| ncol | int | Anzahl der Legendenspalten, Standard ist 1. Wenn mehrere Einträge vorhanden sind, werden sie in mehreren Spalten angezeigt. |
| fontsize | int oder str | Legenden-Schriftgröße, z. B. 10, 'small', 'large' |
| frameon | bool | Ob der Legendenrahmen angezeigt werden soll, Standard ist True |
| shadow | bool | Ob ein Schatteneffekt hinzugefügt werden soll |
| title | str | Der Titel der Legende |
| facecolor | color | Hintergrundfarbe der Legende |
| edgecolor | color | Rahmenfarbe der Legende |
| fancybox | bool | Ob ein abgerundeter Rahmen verwendet werden soll, Standardwert True |
| markerscale | float | Die Skalierung der Marker in der Legende relativ zu den ursprünglichen Markern |
| handlelength | float | Die Länge der Linien in der Legende |
Die Legende zeigt nur Artists an, die den
labelParameter gesetzt haben. Eine übliche Vorgehensweise ist, label direkt in Plot-Funktionen wie plot(), scatter(), bar() anzugeben und dann legend() aufzurufen.
Anwendungsbeispiele
Beispiel 1: Einfache Legende
Beispiel
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(layout='constrained')
# Das Label jeder Kurve wird automatisch in die Legende übernommen
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')
ax.plot(x, np.sin(x) * np.exp(-x/3), label='gedämpfte Sinusfunktion')
ax.legend(loc='upper right') # Alle Labels automatisch sammeln
ax.set_title('Grundlegende Legende')
ax.set_xlabel('x')
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 2: Legende außerhalb des Diagramms + mehrere Spalten
Beispiel
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')
# Mehrere Kurven zeichnen
for i in range(6):
ax.plot(x, np.sin(x + i * 0.5), label=f'sin(x + {i*0.5:.1f})')
# Legende außerhalb der Achsen platzieren, in zwei Spalten angezeigt
ax.legend(loc='upper left',
bbox_to_anchor=(1.02, 1), # Obere rechte Ecke außerhalb
ncol=2, # In zwei Spalten aufteilen
title='Phasenverschiebung',
frameon=True,
fancybox=True,
shadow=True)
ax.set_title('Legende außerhalb des Diagramms (ncol=2)')
ax.set_xlabel('x')
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 3: Benutzerdefinierte Legendeneinträge
Beispiel
import matplotlib.patches as mpatches
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(layout='constrained')
ax.plot(x, np.sin(x), 'b-', linewidth=2)
ax.plot(x, np.cos(x), 'r--', linewidth=2)
# Legendeneinträge manuell angeben (nicht mit Plot-Beschriftungen verknüpft)
blue_line = mpatches.Patch(color='blue', label='Sinuswelle')
red_line = mpatches.Patch(color='red', label='Cosine Wave')
ax.legend(handles=[blue_line, red_line],
loc='upper right',
fontsize=11)
ax.set_title('Benutzerdefinierte Legenden-Handles')
ax.set_xlabel('x')
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 4: Kurzreferenz zu Legenden-Positionscodes
Beispiel
# Positionen für alle loc-Codes anzeigen
locations = [
'upper left', 'upper right', 'lower left', 'lower right',
'center left', 'center right', 'lower center', 'upper center',
'center'
]
fig, axes = plt.subplots(3, 3, figsize=(10, 8),
layout='constrained')
axes = axes.flatten()
for ax, loc in zip(axes, locations):
ax.plot([0, 1], [0, 1], 'b-', label='Linie A')
ax.plot([0, 1], [1, 0], 'r--', label='Linie B')
ax.legend(loc=loc, fontsize=8, title=f'loc="{loc}"')
ax.set_xticks([])
ax.set_yticks([])
fig.suptitle('Alle legend() Positionen', fontsize=14)
plt.show()
Häufig gestellte Fragen
Legende wird nicht angezeigt?
Prüfen Sie, ob die Plot-Funktion denlabelParameter gesetzt hat.
Stellen Sie sicher, dass Sie dielegend()Funktion.
Wenn einige Artists nicht in der Legende erscheinen müssen, setzen Sie label auf eine leere Zeichenkette oder '_nolegend_'.
Wie lassen sich die Linienstile in der Legende teilweise ändern?
Verwenden Sielegend.get_lines()um die Linienobjekte in der Legende abzurufen und ihre Eigenschaften zu ändern, oder verwenden Sie diehandler_mapParameter überschrieben werden.
Andere Erweiterungen