Как исправить в Python: не найдено дескрипторов с метками для добавления в легенду

Как исправить в Python: не найдено дескрипторов с метками для добавления в легенду

Одно предупреждение, с которым вы можете столкнуться при использовании 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.

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()

Обратите внимание, что легенда создается с метками, и на этот раз мы не получаем никаких предупреждений.

Пример 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.

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()

Легенда создается с метками, и на этот раз мы не получаем никаких предупреждений.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.