> Modules non standards > Matplotlib > Ajout de légende
Ajout de légende
Par défaut, la construction de la légende est automatique :
- donner un label à chaque graphe.
- appeler pyplot.legend() à la fin.
Exemple :
pyplot.scatter([0, 1, 2, 3, 4], [6, 4, 6, 4, 5], label = 'A', color = 'red')
pyplot.scatter([0, 1, 2, 3, 4], [5, 3, 7, 5, 3], label = 'B', color = 'blue')
pyplot.legend()
On peut aussi récupérer les handles des graphes et mettre son propre texte :
g1 = pyplot.scatter([0, 1, 2, 3, 4], [6, 4, 6, 4, 5], color = 'red')
2 = pyplot.scatter([0, 1, 2, 3, 4], [5, 3, 7, 5, 3], color = 'blue')
pyplot.legend([g1, g2], ['valeurs de A', 'valeurs de B'])
Attention, dans le cas de pyplot.plot, ce qu'on récupère est déjà une liste (au cas où il y a plusieurs séries, donc faire :
g1 = pyplot.plot([0, 1, 2, 3, 4], [6, 4, 6, 4, 5], color = 'red')
2 = pyplot.plot([0, 1, 2, 3, 4], [5, 3, 7, 5, 3], color = 'blue')
pyplot.legend(g1 + g2, ['valeurs de A', 'valeurs de B'])
Paramètres des légendes :
- loc = 'upper left' : localisation de la légende par rapport au graphe. Les localisations possibles sont : 'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'upper center', 'center'
- loc = 'best' : détermine automatiquement le meilleur endroit pour afficher la légende.
- fontsize = 10 : fixe la taille des caractères de la légende.
- title = 'mon titre' : rajoute un titre à la légende.
- title_fontsize = 10 : la taille du titre de la légende.
- labelcolor = 'green' : la couleur du texte des labels
- labelspacing = 1.5 : l'espacement vertical relatif entre les labels (1 est le défaut).
- borderpad = 1.5 : l'espacement relatif autour des labels (1 est le défaut).
- markerscale = 2 : taille des symboles pour un scatterplot.
- ncol = 2 : donne le nombre de colonnes sur lequel la légende est mise.
- frameon = True : met un encadré autour de la légende (défaut).
- shadow = True : ombrage autour de la légende.
- fancybox = True : arrondit les bords de l'encadré de la légende.
- facecolor = 'lemonchiffon' : la couleur de fond de la légende.
- edgecolor = 'green' : la couleur de l'encadré de la légende.
- bbox_to_anchor = (1, 1)) : indique où mettre la légende : (1, 1) est le coin supérieur droit, (0, 1) est le coin supérieur gauche, et loc = 'upper left' indique alors que c'est le coin supérieur gauche qu'il faut positionner à cet endroit.
Exemple de code :
g1 = pyplot.scatter([0, 1, 2, 3, 4], [6, 4, 6, 4, 5], label = 'A', color = 'red')
g2 = pyplot.scatter([0, 1, 2, 3, 4], [5, 3, 7, 5, 3], label = 'B', color = 'blue')
pyplot.legend(loc = 'upper left', fontsize = 8, title = 'mon titre', title_fontsize = 15,
labelcolor = 'green', labelspacing = 1.5, borderpad = 1.5, frameon = True, shadow = True,
fancybox = True, facecolor = 'lemonchiffon', edgecolor = 'green', markerscale = 2,
bbox_to_anchor = (0.5, 1))
Pour enlever la légende : pyplot.gca().legend().set_visible(False)
Pour modifier une légende existante :
- myLegend = pyplot.gca().legend()
- myLegend.set(bbox_to_anchor = None, frame_on = False, title = 'new title', alpha = 0.3, loc = 'best')
- on peut faire aussi myLegend.update({'bbox_to_anchor': None, 'frame_on': False, 'title': 'new title', 'alpha': 0.3})
Pour modifier le texte d'une légende :
exemple :
g1 = pyplot.scatter([0, 1, 2, 3, 4], [6, 4, 6, 4, 5], label = 'A', color = 'red')
g2 = pyplot.scatter([0, 1, 2, 3, 4], [5, 3, 7, 5, 3], label = 'B', color = 'blue')
myLegend = pyplot.legend()
myLegend.texts[0].set(backgroundcolor = 'yellow', color = 'red', fontsize = 15, fontweight = 'bold',
fontstyle = 'italic', rotation = 90, text = 'a', x = 10)
Pour créer une légende à partir de rien :
pyplot.legend(handles = [matplotlib.lines.Line2D([], [], color = 'red', markerfacecolor = 'red',\
marker = 's', linestyle = 'None', markersize = 20, label = 'rouge'), \
matplotlib.lines.Line2D([], [], color = 'blue', markerfacecolor = 'blue',
marker = 's', linestyle = 'None', markersize = 20, label = 'bleu')], loc = 'lower left')
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert