Jak naprawić w pythonie: nie znaleziono uchwytów z etykietami do umieszczenia w legendzie
Jednym z ostrzeżeń, które możesz napotkać podczas korzystania z matplotlib, jest:
No handles with labels found to put in legend.
To ostrzeżenie pojawia się zwykle z jednego z dwóch powodów:
1. Nie udało się utworzyć etykiet dla danych wykresu.
2. Próbowałeś stworzyć legendę przed utworzeniem fabuły.
Poniższe przykłady pokazują, jak uniknąć tego ostrzeżenia w obu scenariuszach.
Przykład 1: Nie udało się utworzyć etykiet dla danych wykresu.
Załóżmy, że próbujemy użyć poniższego kodu do utworzenia wykresu liniowego w Matplotlib z legendą i etykietami:
import matplotlib. pyplot as plt
import pandas as pd
#define data values
df = pd. DataFrame ({' x ': [18, 22, 19, 14, 14, 11, 20, 28],
' y ': [5, 7, 7, 9, 12, 9, 9, 4],
' z ': [11, 8, 10, 6, 6, 5, 9, 12]})
#add multiple lines to matplotlib plot
plt. plot (df[' x '], color=' green ')
plt. plot (df[' y '], color=' blue ')
plt. plot (df[' z '], color=' purple ')
#attempt to add legend to plot
plt. legend ()
No handles with labels found to put in legend.
Matplotlib tworzy wykres liniowy, ale pojawia się ostrzeżenie : Nie znaleziono uchwytów z etykietami do umieszczenia w legendzie .
Aby uniknąć tego ostrzeżenia, musimy użyć argumentu label , aby podać etykietę dla każdej linii na wykresie:
import matplotlib. pyplot as plt
import pandas as pd
#define data values
df = pd. DataFrame ({' x ': [18, 22, 19, 14, 14, 11, 20, 28],
' y ': [5, 7, 7, 9, 12, 9, 9, 4],
' z ': [11, 8, 10, 6, 6, 5, 9, 12]})
#add multiple lines to matplotlib plot
plt. plot (df[' x '], label=' x ', color=' green ')
plt. plot (df[' y '], label=' y ', color=' blue ')
plt. plot (df[' z '], label=' z ', color=' purple ')
#attempt to add legend to plot
plt. legend ()
Należy pamiętać, że legenda jest tworzona z etykietami i tym razem nie otrzymujemy żadnych ostrzeżeń.
Przykład 2: Próbowano utworzyć legendę przed utworzeniem fabuły.
Załóżmy, że próbujemy użyć poniższego kodu do utworzenia wykresu liniowego w Matplotlib z legendą i etykietami:
import matplotlib. pyplot as plt
import pandas as pd
#define data values
df = pd. DataFrame ({' x ': [18, 22, 19, 14, 14, 11, 20, 28],
' y ': [5, 7, 7, 9, 12, 9, 9, 4],
' z ': [11, 8, 10, 6, 6, 5, 9, 12]})
#attempt to add legend to plot
plt. legend ()
#add multiple lines to matplotlib plot
plt. plot (df[' x '], label=' x ', color=' green ')
plt. plot (df[' y '], label=' y ', color=' blue ')
plt. plot (df[' z '], label=' z ', color=' purple ')
No handles with labels found to put in legend.
Matplotlib tworzy wykres liniowy, ale pojawia się ostrzeżenie : Nie znaleziono uchwytów z etykietami do umieszczenia w legendzie .
Aby uniknąć tego ostrzeżenia, musimy użyć plt.legend() po dodaniu linii do wykresu:
import matplotlib. pyplot as plt
import pandas as pd
#define data values
df = pd. DataFrame ({' x ': [18, 22, 19, 14, 14, 11, 20, 28],
' y ': [5, 7, 7, 9, 12, 9, 9, 4],
' z ': [11, 8, 10, 6, 6, 5, 9, 12]})
#add multiple lines to matplotlib plot
plt. plot (df[' x '], label=' x ', color=' green ')
plt. plot (df[' y '], label=' y ', color=' blue ')
plt. plot (df[' z '], label=' z ', color=' purple ')
#attempt to add legend to plot
plt. legend ()
Legenda jest tworzona z etykietami i tym razem nie otrzymujemy ostrzeżenia.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami