Одно предупреждение, с которым вы можете столкнуться при использовании matplotlib:
No handles with labels found to put in legend.
Это предупреждение обычно появляется по одной из двух причин:
1. Вам не удалось создать метки для данных на графике.
2. Вы пытались создать легенду до создания графика.
В следующих примерах показано, как избежать этого предупреждения в обоих сценариях.
Пример 1. Не удалось создать метки для данных на графике.
Предположим, мы пытаемся использовать следующий код для создания линейной диаграммы в matplotlib с легендой и метками:
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.
![](https://www.codecamp.ru/content/images/2022/03/handle1.jpg)
Matplotlib создает линейный график, но мы получаем предупреждение о том, что не найдены дескрипторы с метками для размещения в легенде .
Чтобы избежать этого предупреждения, мы должны использовать аргумент метки , чтобы указать метку для каждой строки графика:
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()
![](https://www.codecamp.ru/content/images/2022/03/handle2.jpg)
Обратите внимание, что легенда создается с метками, и на этот раз мы не получаем никаких предупреждений.
Пример 2. Вы попытались создать легенду перед созданием графика.
Предположим, мы пытаемся использовать следующий код для создания линейной диаграммы в matplotlib с легендой и метками:
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.
![](https://www.codecamp.ru/content/images/2022/03/handle1.jpg)
Matplotlib создает линейный график, но мы получаем предупреждение о том, что не найдены дескрипторы с метками для размещения в легенде .
Чтобы избежать этого предупреждения, мы должны использовать plt.legend() после добавления строк на график:
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()
![](https://www.codecamp.ru/content/images/2022/03/handle2.jpg)
Легенда создается с метками, и на этот раз мы не получаем никаких предупреждений.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами