Προσθήκη ενός μύθου στο PyPlot στο Matplotlib με τον πιο απλό τρόπο
TL;DR -> Πώς μπορεί κανείς να δημιουργήσει ένα υπόμνημα για ένα γραμμικό γράφημα στο
Matplotlib
'sPyPlot
χωρίς να δημιουργήσει επιπλέον μεταβλητές;
Παρακαλώ εξετάστε το παρακάτω σενάριο γραφικών παραστάσεων:
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()
Όπως μπορείτε να δείτε, αυτή είναι μια πολύ βασική χρήση του matplotlib
's PyPlot
. Αυτό παράγει ιδανικά ένα γράφημα όπως το παρακάτω:
Τίποτα το ιδιαίτερο, το ξέρω. Ωστόσο, είναι ασαφές ως προς το ποια δεδομένα απεικονίζονται πού (προσπαθώ να απεικονίσω τα δεδομένα κάποιων αλγορίθμων ταξινόμησης, το μήκος σε σχέση με το χρόνο που απαιτείται, και θα ήθελα να βεβαιωθώ ότι οι άνθρωποι γνωρίζουν ποια γραμμή είναι ποια). Έτσι, χρειάζομαι έναν υπόμνημα, ωστόσο, ρίχνοντας μια ματιά στο παρακάτω παράδειγμα(από τον επίσημο ιστότοπο):
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)
Θα δείτε ότι πρέπει να δημιουργήσω μια επιπλέον μεταβλητή ax
. Πώς μπορώ να προσθέσω ένα υπόμνημα στο γράφημά μου χωρίς να χρειάζεται να δημιουργήσω αυτή την επιπλέον μεταβλητή και διατηρώντας την απλότητα του τρέχοντος σεναρίου μου.
Προσθέστε μια
label=
σε κάθε κλήσηplot()
και, στη συνέχεια, καλέστεlegend(loc='upper left')
.Σκεφτείτε αυτό το δείγμα (δοκιμασμένο με Python 3.8.0):
Ακολουθεί ένα παράδειγμα για να σας βοηθήσει ...
Προσθέστε ετικέτες σε κάθε όρισμα στην κλήση plot που αντιστοιχεί στη σειρά που απεικονίζει, π.χ.
label = "series 1"
Στη συνέχεια, προσθέστε απλά την
Pyplot.legend()
στο τέλος του σεναρίου σας και ο θρύλος θα εμφανίζει αυτές τις ετικέτες.