Benutzerdefinierte Legenden erstellen#

Benutzerdefinierte Legenden Stück für Stück erstellen.

Hinweis

Weitere Informationen zum Erstellen und Anpassen von Legenden finden Sie auf den folgenden Seiten

Manchmal möchten Sie keine Legende, die explizit mit den von Ihnen geplotteten Daten verknüpft ist. Wenn Sie beispielsweise 10 Linien geplottet haben, aber für jede kein Legenden-Element anzeigen möchten. Wenn Sie einfach die Linien plotten und ax.legend() aufrufen, erhalten Sie Folgendes:

import matplotlib.pyplot as plt
import numpy as np

import matplotlib as mpl
from matplotlib import cycler

# Fixing random state for reproducibility
np.random.seed(19680801)
N = 10
data = (np.geomspace(1, 10, 100) + np.random.randn(N, 100)).T
cmap = plt.cm.coolwarm
mpl.rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))

fig, ax = plt.subplots()
lines = ax.plot(data)
custom legends

Da die Daten keine Labels haben, müssen wir beim Erstellen einer Legende die Symbole und Labels definieren. In diesem Fall können wir eine Legende mit Matplotlib-Objekten zusammenstellen, die nicht explizit mit den geplotteten Daten verknüpft sind. Zum Beispiel:

from matplotlib.lines import Line2D

custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),
                Line2D([0], [0], color=cmap(.5), lw=4),
                Line2D([0], [0], color=cmap(1.), lw=4)]

fig, ax = plt.subplots()
lines = ax.plot(data)
ax.legend(custom_lines, ['Cold', 'Medium', 'Hot'])
custom legends

Es gibt viele andere Matplotlib-Objekte, die auf diese Weise verwendet werden können. Im folgenden Code haben wir einige gängige aufgelistet.

from matplotlib.lines import Line2D
from matplotlib.patches import Patch

legend_elements = [Line2D([0], [0], color='b', lw=4, label='Line'),
                   Line2D([0], [0], marker='o', color='w', label='Scatter',
                          markerfacecolor='g', markersize=15),
                   Patch(facecolor='orange', edgecolor='r',
                         label='Color Patch')]

# Create the figure
fig, ax = plt.subplots()
ax.legend(handles=legend_elements, loc='center')

plt.show()
custom legends

Gesamtlaufzeit des Skripts: (0 Minuten 3,027 Sekunden)

Galerie generiert von Sphinx-Gallery