En vous basant sur la question et la réponse ici (Line plus shaded region for error band in matplotlib's legend et similaire à Combined legend entry for plot and fill_between), j'ai pu créer une entrée de légende qui combine des éléments de ligne et de patch.
Dans mon cas d'utilisation, j'ai besoin d'en tracer plusieurs. Lorsque je le fais, je n'ai une entrée de légende que pour la dernière combinaison ligne + patch.
import numpy as np
import matplotlib.pyplot as plt
def plot(x, y, ax, col, group, **kwargs):
hline, = ax.plot(x, y, 'k--', color=col)
hpatch = ax.fill_between(x, y+10, y-10, color=col, alpha=0.5)
ax.legend([(hline, hpatch)], [f"groupe {group}: Moyenne + intervalle"])
fig, ax = plt.subplots()
x = np.linspace(1, 100, 100)
plot(x, x, ax, "C0", 1)
plot(x, x+30, ax, "C1", 2)
plot(x, x+60, ax, "C2", 3)
Remarquez la présence uniquement de la dernière entrée (groupe 3) dans la légende.
Y a-t-il un moyen d'inclure tous les groupes de lignes/chemins dans la légende de sorte qu'il y ait 3 éléments dans la légende (dans ce cas) ?
Des points bonus si cela peut être géré entièrement dans la fonction plot
, évitant ainsi de devoir transmettre les références de la fonction de tracé.
Cette question ne concerne pas plusieurs légendes distinctes.