Composizione di leggende personalizzate #

Composizione di leggende personalizzate pezzo per pezzo.

Nota

Per ulteriori informazioni sulla creazione e la personalizzazione delle legende, vedere le seguenti pagine:

A volte non vuoi una legenda esplicitamente legata ai dati che hai tracciato. Ad esempio, supponi di aver tracciato 10 linee, ma non vuoi che venga visualizzato un elemento della legenda per ognuna di esse. Se tracci semplicemente le linee e chiami ax.legend(), otterrai quanto segue:

import matplotlib as mpl
from matplotlib import cycler
import matplotlib.pyplot as plt
import numpy as np

# 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)
ax.legend()
leggende personalizzate
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.

<matplotlib.legend.Legend object at 0x7f2cf9d80c40>

Si noti che non sono state create voci di legenda. In questo caso, possiamo comporre una legenda utilizzando oggetti Matplotlib che non sono esplicitamente legati ai dati che sono stati tracciati. Per esempio:

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'])
leggende personalizzate
<matplotlib.legend.Legend object at 0x7f2cfaadfac0>

Esistono molti altri oggetti Matplotlib che possono essere utilizzati in questo modo. Nel codice seguente ne abbiamo elencati alcuni comuni.

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

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()
leggende personalizzate

Tempo di esecuzione totale dello script: (0 minuti 1.610 secondi)

Galleria generata da Sphinx-Gallery