Mis a jour le 2025-04-14, 12:10

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 :
  • myLegend = pyplot.gca().legend(); myLegend.texts() : renvoie la liste des labels qu'on peut alors modifier comme on veut.
  • myLegend.texts[0].set(color = 'red')
  • on peut faire aussi :
    for myText in pyplot.legend().get_texts():
      myText.set_text(myText.get_text() + ' ()')
          
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 order une légende par ligne plutôt que par colonne :
reorder = lambda l, nc: sum((l[i::nc] for i in range(nc)), [])
handles, labels = pyplot.gca().get_legend_handles_labels()
pyplot.gca().legend(reorder(handles, 3), reorder(labels, 3), ncol = 3, fontsize = 12, loc = 'upper left')
  
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