2014-05-01 14 views
5

Konfiguracja wykresu przy użyciu matplotlib który działa prawidłowo (patrz zdjęcie poniżej), ale gdy próbuję dodać legendę pojawia się następujący błąd: UserWarning: No labeled objects found. Use label='...' kwarg on indivial plots.Label nie przedmiotami znalezionymi

Oto kod używam do określenia linie, które chcę w legendzie i narysować napis:

#Moving average labels 
smaLabel1 = str(SMA1)+'d SMA' 
smaLabel2 = str(SMA2)+'d SMA' 
smaLabel3 = str(SMA3)+'d SMA' 

#Add SMAs to chart 
ax1.plot(ind, avg1, '#5998ff', label=smaLabel1, linewidth=1) 
ax1.plot(ind, avg2, '#ffbb82', label=smaLabel2, linewidth=1) 
ax1.plot(ind, avg3, '#d689c4', label=smaLabel3, linewidth=1) 
""" End SMA additions """ 

#Add legend 
plt.legend() 

mam sprawdzone smaLabel zmiennych, a wszystkie posiadają odpowiednie sznurki. Czy ktoś wie, dlaczego etykiety się nie rejestrują?

enter image description here

+0

W kodzie, którego używasz, co dzieje się między ostatnim ax1.plot (..., legend = ...) a plt.legend()? (np. plt.grid(), i tak dalej) – AMacK

+1

JDGD czy ustaliłeś kod próbny powyżej po porady @ CT-Zhu? – ankostis

Odpowiedz

9

Musisz mieć wykreślić wykresy świec i objętości przed wykreślenie SMA. Wykres świecy nie ma żadnego oznaczonego obiektu, dlatego podczas wywoływania plt.legend() próbuje on wydrukować etykietę dla każdego wykresu na bieżących osiach. Dlatego też, to masz UserWarning: No labeled objects found. Use label='...' kwarg on indivial plots.

Aby go rozwiązać, mam nadzieję, że to jest jasne w tym momencie, po prostu wymaga, aby wykreślić SMA jest bardzo pierwszy, przed działki świec i wywołać legend() tuż po tym, zanim jakiekolwiek inne działki bycia wygenerowany.

+0

Dziękujemy! Nie zdawałem sobie sprawy, że muszę wykreślić SMA przed świecznikiem. Zmieniono deklarację i wszystko działa teraz. – JDGD

Powiązane problemy