TL; DR -> Comment peut - on créer une légende pour un graphique de ligne dans
Matplotlib
« sPyPlot
sans créer des variables supplémentaires?
Veuillez considérer le script 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, c'est une utilisation très basique de matplotlib
« s PyPlot
. Cela génère idéalement un graphique comme celui ci-dessous:
Rien de spécial, je sais. Cependant, il n'est pas clair quelles données sont tracées où (j'essaie de tracer les données de certains algorithmes de tri, la durée en fonction du temps, et je voudrais m'assurer que les gens savent quelle ligne est laquelle). Ainsi, j'ai besoin d'une légende, cependant, jetant un œil à l'exemple suivant ci-dessous ( sur le site officiel ):
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 j'ai besoin de 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 à conserver la simplicité de mon script actuel?
la source
matplotlib
auparavant, je voulais que les choses soient aussi simples que possible. De plus, si vous jetez un coup d'œil à la réponse de Rob, c'est beaucoup plus simple que l'exemple montré sur le site Web. J'espère que ça aide.import matplotlib.pyplot as plt
au lieu dePyPlot
Réponses:
Ajoutez un
label=
à chacun de vosplot()
appels, puis appelezlegend(loc='upper left')
.Considérez cet exemple (testé avec Python 3.8.0):
Légèrement modifié à partir de ce tutoriel: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
la source
plt.legend(loc='upper left')
fonctionne également, d'oùplt
vientimport matplotlib.pyplot as plt
.plt.legend
:plt.legend(['First Label', 'Second Label'])
Vous pouvez accéder à l'instance Axes (
ax
) avecplt.gca()
. Dans ce cas, vous pouvez utiliserVous pouvez le faire en utilisant le
label=
mot - clé dans chacun de vosplt.plot()
appels ou en attribuant vos étiquettes en tant que tuple ou liste à l'intérieurlegend
, comme dans cet exemple de travail:Cependant, si vous devez accéder à l'instance Axes plusieurs fois, je vous recommande de l'enregistrer dans la variable
ax
avecpuis appeler
ax
au lieu deplt.gca()
.la source
Voici un exemple pour vous aider ...
la source
Un tracé simple pour les courbes sinus et cosinus avec une légende.
Utilisé
matplotlib.pyplot
la source
Ajoutez des étiquettes à chaque argument de votre appel de tracé correspondant à la série qu'il représente, c'est-à-dire
label = "series 1"
Ensuite, ajoutez simplement
Pyplot.legend()
au bas de votre script et la légende affichera ces étiquettes.la source
Vous pouvez ajouter une documentation de légende personnalisée
la source
la source