6
Neden plt.plot etiketi ile ilgili bir hata alıyorum? 'liste' nesne hiçbir özellik 'get_label'Python legend özniteliği hatası
Neden plt.plot etiketi ile ilgili bir hata alıyorum? 'liste' nesne hiçbir özellik 'get_label'Python legend özniteliği hatası
plt.plot
kerede birden fazla çizgi çizmek Çünkü, bu line2D
nesnelerin bir listesi döndürür vardır:
fig = plt.figure()
ax = plt.gca()
barplt = plt.bar(bins,frq,align='center',label='Dgr')
normplt = plt.plot(bins_n,frq_n,'--r', label='Norm');
ax.set_xlim([min(bins)-1, max(bins)+1])
ax.set_ylim([0, max(frq)])
plt.xlabel('Dgr')
plt.ylabel('Frequency')
plt.show()
plt.legend(handles=[barplt,normplt])
Bu
alıyorum hatayı olduğunu Sadece bir satır çizseniz bile (örneğinizde, uzunluk 1'in bir listesi). Lejandın tutamacını tuttuğunuzda, sadece bu listenin ilk maddesini kullanmak istiyorsunuz (gerçekline2D
nesnesi).
iki şekilde (en azından) bu var çözebilirsiniz vardır: Eğer plt.plot
çağırdığınızda
1) normplt
barplt = plt.bar(bins,frq,width,align='center',label='Dgr')
normplt, = plt.plot(bins_n,frq_n,'--r', label='Norm') # note the comma after normplt
print normplt
# Line2D(Norm) <-- This is the line2D object, not a list, so we can use it in legend
...
plt.legend(handles=[barplt,normplt])
listeden sadece depolamak ilk öğeye,
normplt
sonra bir virgül ekleyin Eğer
plt.legend
(
normplt[0]
çağırdığınızda
2)) listesinde sadece ilk öğeyi kullanın:
barplt = plt.bar(bins,frq,width,align='center',label='Dgr')
normplt = plt.plot(bins_n,frq_n,'--r', label='Norm')
print normplt
# [<matplotlib.lines.Line2D object at 0x112076710>]
# Note, this is a list containing the Line2D object. We just want the object,
# so we can use normplt[0] in legend
...
plt.legend(handles=[barplt,normplt[0]])
sen Wou soru * Tam traceback * kaydedilerek geliştirilmiştir. Bu, soruna neden olan çizgiyi saptadı ve insanların soruyu cevaplamasına yardımcı oldu. Ayrıca kendi sorununuzu çözmenize yardımcı olurdu. Sorunuz daha dikkatli yazılmış olsaydı, bir not almış olabilir. –