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?
sumber
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
Jawaban:
Tambahkan
label=
ke masing-masingplot()
panggilan Anda , lalu panggillegend(loc='upper left')
.Pertimbangkan contoh ini (diuji dengan Python 3.8.0):
Sedikit dimodifikasi dari tutorial ini: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
sumber
plt.legend(loc='upper left')
juga berfungsi, dari manaplt
berasalimport matplotlib.pyplot as plt
.plt.legend
:plt.legend(['First Label', 'Second Label'])
Anda dapat mengakses instance Axes (
ax
) denganplt.gca()
. Dalam hal ini, Anda bisa menggunakanAnda dapat melakukan ini dengan menggunakan
label=
kata kunci di setiapplt.plot()
panggilan Anda atau dengan menetapkan label Anda sebagai tuple atau daftar di dalamnyalegend
, seperti dalam contoh ini:Namun, jika Anda perlu untuk mengakses contoh Axes lebih bahwa sekali, saya sarankan menyimpannya ke variabel
ax
dengandan kemudian memanggil
ax
bukanplt.gca()
.sumber
Berikut ini contoh untuk membantu Anda ...
sumber
Plot sederhana untuk kurva sinus dan cosinus dengan legenda.
Bekas
matplotlib.pyplot
sumber
Tambahkan label ke setiap argumen dalam panggilan plot Anda yang sesuai dengan seri yang dibuatnya, yaitu
label = "series 1"
Kemudian cukup tambahkan
Pyplot.legend()
ke bagian bawah skrip Anda dan legenda akan menampilkan label ini.sumber
Anda dapat menambahkan dokumentasi legenda khusus
sumber
sumber