Nota
Fare clic qui per scaricare il codice di esempio completo
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()
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'])
<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()
Tempo di esecuzione totale dello script: (0 minuti 1.610 secondi)