Ajouter une légende à PyPlot en Matplotlib de la manière la plus simple possible
TL;DR -> Comment créer une légende pour un graphique linéaire dans
Matplotlib
'sPyPlot
sans créer de variables supplémentaires ?
Veuillez considérer le script de graphique ci-dessous :
if __name__ == '__main__':
PyPlot.plot(total_lengths, sort_times_bubble, 'b-',
total_lengths, sort_times_ins, 'r-',
total_lengths, sort_times_merge_r, 'g+',
total_lengths, sort_times_merge_i, 'p-', )
PyPlot.title("Combined Statistics")
PyPlot.xlabel("Length of list (number)")
PyPlot.ylabel("Time taken (seconds)")
PyPlot.show()
Comme vous pouvez le voir, il s'agit d'une utilisation très basique de matplotlib
's PyPlot
. Idéalement, cela génère un graphique comme celui ci-dessous :
![Graph][1]
Rien de spécial, je sais. Cependant, il n’est pas clair quelles données sont tracées à quel endroit (j’essaie de tracer les données de certains algorithmes de tri, la longueur par rapport au temps pris, et je voudrais m’assurer que les gens savent quelle ligne est quelle ligne). J'ai donc besoin d'une légende, mais si l'on regarde l'exemple suivant ([du site officiel][2]) :
ax = subplot(1,1,1)
p1, = ax.plot([1,2,3], label="line 1")
p2, = ax.plot([3,2,1], label="line 2")
p3, = ax.plot([2,3,1], label="line 3")
handles, labels = ax.get_legend_handles_labels()
# reverse the order
ax.legend(handles[::-1], labels[::-1])
# or sort them by labels
import operator
hl = sorted(zip(handles, labels),
key=operator.itemgetter(1))
handles2, labels2 = zip(*hl)
ax.legend(handles2, labels2)
Vous verrez que je dois créer une variable supplémentaire ax
. Comment puis-je ajouter une légende à mon graphique _sans avoir à créer cette variable supplémentaire et en conservant la simplicité de mon script actuel.
[1] : http://i.stack.imgur.com/sRcuY.png [2] : http://matplotlib.org/users/legend_guide.html
Ajoutez un
label=
à chacun de vos appels àplot()
, puis appelezlegend(loc='upper left' ;)
.Considérez cet exemple (testé avec Python 3.8.0) :
[[entrer la description de l'image ici][1]][1] Légèrement modifié à partir de ce tutoriel : http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
[1] : https://i.stack.imgur.com/GyMXH.png
Voici un exemple pour vous aider...
[!entrer la description de l'image ici][1]][1]
[1] : https://i.stack.imgur.com/jPnzz.png
Ajoutez des étiquettes à chaque argument de votre appel de graphique correspondant à la série qu'il représente, par exemple
label = "série 1"
.Ensuite, ajoutez simplement
Pyplot.legend()
au bas de votre script et la légende affichera ces étiquettes.