TL; DR -> Come si può creare una legenda per un grafico a linee in
Matplotlibs'PyPlotsenza creare variabili aggiuntive?
Si prega di considerare lo script grafico qui sotto:
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()
Come si può vedere, si tratta di un uso di base di matplotlibs' PyPlot. Questo genera idealmente un grafico come quello qui sotto:

Niente di speciale, lo so. Tuttavia, non è chiaro quali dati vengano tracciati dove (sto cercando di tracciare i dati di alcuni algoritmi di ordinamento, la lunghezza rispetto al tempo impiegato e vorrei assicurarmi che le persone sapessero quale linea fosse quale). Pertanto, ho bisogno di una legenda, tuttavia, dando un'occhiata al seguente esempio di seguito ( dal sito ufficiale ):
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)
Vedrai che devo creare una variabile aggiuntiva ax. Come posso aggiungere una legenda al mio grafico senza dover creare questa variabile aggiuntiva e conservare la semplicità del mio script attuale?
matplotlibprima, volevo che le cose fossero il più semplici possibile. Inoltre, se dai un'occhiata alla risposta di Rob, è molto più semplice dell'esempio mostrato sul sito web. Spero che aiuti.
import matplotlib.pyplot as pltinvece diPyPlot




