TL; DR -> Bagaimana cara membuat legenda untuk grafik garis
Matplotlib
diPyPlot
tanpa membuat variabel tambahan?
Silakan pertimbangkan skrip grafik di bawah ini:
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()
Seperti yang Anda lihat, ini adalah penggunaan yang sangat dasar matplotlib
's PyPlot
. Idealnya ini menghasilkan grafik seperti di bawah ini:
Tidak ada yang istimewa, saya tahu. Namun, tidak jelas data apa yang sedang diplot di mana (Saya mencoba memplot data dari beberapa algoritma pengurutan, panjang terhadap waktu yang dibutuhkan, dan saya ingin memastikan orang tahu baris mana yang mana). Jadi, saya butuh legenda, lihat contoh berikut di bawah ini ( dari situs resmi ):
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)
Anda akan melihat bahwa saya perlu membuat variabel tambahan ax
. Bagaimana saya bisa menambahkan legenda ke grafik saya tanpa harus membuat variabel tambahan ini dan mempertahankan kesederhanaan skrip saya saat ini?
matplotlib
sebelumnya, saya ingin menjaga hal-hal sesederhana mungkin. Juga, jika Anda melihat jawaban Rob, itu jauh lebih sederhana daripada contoh yang ditampilkan di situs web. Saya harap itu membantu.
import matplotlib.pyplot as plt
sebagai gantiPyPlot