> Modules non standards > Matplotlib > Ajout de légende
Ajout de légende
Le principe pour ajouter une légende est de :
- récupérer l'objet renvoyé par l'appel à chaque fonction qui dessine un graphe.
- se servir de ces objets pour l'appel à la fonction legend.
- exemple : g1 = pyplot.scatter(...); g2 = pyplot.scatter(...); pyplot.legend([g1, g2, g3], ['droite', 'parabole']) : on donne les labels associés à chaque graphe en 2ème argument.
- attention : quand on appelle pyplot.plot et qu'on veut tracer la légende, ne pas oublier de récupérer le retour sous forme de tuple : myPlot, = pyplot.plot(...)
pyplot.gca().legend() : affiche la légende, mais en fait, c'est équivalent aux 2 étapes suivantes qui peuvent être décomposées :
- (handles, labels) = pyplot.gca().get_legend_handles_labels()
- puis : pyplot.gca().legend(handles, labels)
Pour changer la légende de place : pyplot.legend(loc = 'upper left')
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.
- ncol = 2 : donne le nombre de colonnes sur lequel la légende est mise.
- frameon = True : met un encadré autour de la légende.
- title = 'La legende' : donne un titre à la légende.
- markerscale = 2 : taille des symboles pour un scatterplot.
- scatterpoints = 1 : pour un scatterplot, dit combien de symbole représenter dans la légende (par défaut, 3 par scatter point)
Pour modifier les propriétés d'une légende : pyplot.gca().legend(fontsize = 14, loc = 'best')
Pour modifier une légende après coup :
pyplot.legend(loc = 'best', prop = {'size': 8}, title = 'my title', title_fontsize = 10, ncol = 3)
Exemple de code :
import math
figure = pyplot.figure()
pyplot.subplot(2, 1, 1)
g1 = pyplot.scatter(range(5), [x + 1 for x in range(5)],
color = 'red', marker = 'o', s = 40)
g2 = pyplot.scatter(range(5), [x ** 2 for x in range(5)],
color = 'green', marker = 'd', s = 40)
g3 = pyplot.scatter(range(5), [7 * math.sqrt(x) for x in range(5)],
color = 'blue', marker = '*', s = 40)
pyplot.legend([g1, g2, g3], ['droite', 'parabole', 'racine'],
loc = 'upper left', ncol = 2, scatterpoints = 1,
frameon = True, markerscale = 2, title = 'La legende',
borderpad = 0.5, labelspacing = 0.5)
pyplot.subplot(2, 1, 2)
b1 = pyplot.bar(range(4), [1, 2, 3, 2], width = 0.4, color = 'red')
b2 = pyplot.bar([x + 0.4 for x in range(4)], [4, 3, 2, 1],
width = 0.4, color = 'blue')
pyplot.xticks([x + 0.4 for x in range(4)], ['A', 'B', 'C', 'D'])
pyplot.legend([b1, b2], ['rouge', 'bleu'])
Pour rajouter une légende indépendamment des graphes faits :
greenPatch = matplotlib.patches.Rectangle((0, 0), 0, 0, color = 'green')
redPatch = matplotlib.patches.Rectangle((0, 0), 0, 0, color = 'red')
pyplot.legend([greenPatch, redPatch], ['group1', 'group2'], markerscale = 100, frameon = False, fontsize = 10)
Légende après avoir tracé plusieurs courbes avec pyplot.plot :
- faire plts.append(pyplot.plot(...))
- puis : pyplot.legend([x[0] for x in plts], ['label1', 'label2', ...])
Pour enlever la légende : pyplot.gca().legend().set_visible(False)
Positionnement de la légende et réglage de la taille : pour positionner l'angle en haut à droite de la légende (upper right) en haut à droite du graphe (1, 1) en indiquant la taille de la fonte : pyplot.legend(bbox_to_anchor = (1, 1), loc = 'upper right', prop = {'size': 10})
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert