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?
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