Menambahkan legenda untuk PyPlot di Matplotlib dalam cara yang mungkin paling sederhana
TL;DR -> Bagaimana kita bisa membuat sebuah legenda grafik garis di
Matplotlib
'sPyPlot
tanpa ada tambahan variabel?
Perhatikan grafik script 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 sangat dasar penggunaan matplotlib
's PyPlot
. Ini pilihan yang menghasilkan grafik seperti berikut:
Tidak ada yang istimewa, aku tahu. Namun, tidak jelas seperti apa data yang diplot di mana (I'm mencoba untuk plot data dari beberapa algoritma pengurutan, panjang terhadap waktu yang dibutuhkan, dan I'd seperti untuk memastikan orang-orang tahu yang mana). Dengan demikian, saya perlu legenda, namun, mengambil melihat pada contoh berikut di bawah ini(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 untuk membuat tambahan variabel ax
. Bagaimana saya dapat menambahkan sebuah legenda grafik saya without harus membuat tambahan ini variabel dan tetap mempertahankan kesederhanaan saya saat ini naskah.
Tambahkan
label=
untuk masing-masing dari andaplot()
panggilan, dan kemudian memanggillegenda(loc='kiri atas')
.Pertimbangkan contoh ini (diuji dengan Python 3.8.0):
Sedikit modifikasi dari tutorial ini: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
Anda dapat mengakses Sumbu contoh (
ax
) denganplt.gca()
. Dalam hal ini, anda dapat menggunakanAnda dapat melakukan ini dengan menggunakan
label=
kata kunci di masing-masingplt.plot()
panggilan atau dengan menetapkan label anda sebagai tuple atau daftar dalamlegenda
, seperti dalam contoh kerja:Namun, jika anda perlu untuk mengakses Sumbu contoh lebih dari sekali, saya tidak menyarankan menyimpannya ke variabel
ax
dengandan kemudian memanggil
ax
dan bukanplt.gca()
.Berikut ini's contoh untuk membantu anda keluar ...
Plot yang sederhana untuk sinus dan cosinus kurva dengan legenda.
Digunakan
matplotlib.pyplot
Tambahkan label untuk masing-masing argumen di plot anda menghubungi yang sesuai untuk seri ini adalah grafik, yaitu
label = "1"
Maka cukup tambahkan
Pyplot.legenda()
ke bawah dari script anda dan legenda akan menampilkan label ini.Anda dapat menambahkan kustom legenda documentation
pertama = [1, 2, 4, 5, 4] kedua = [3, 4, 2, 2, 3] plt.plot(pertama,'g--', kedua, 'r--') plt.legenda(['Pertama Daftar','Kedua Daftar'], loc='kiri atas') plt.tampilkan()