Как исправить в 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 создает линейный график, но мы получаем предупреждение «Нет маркеров с метками, которые можно поместить в легенду» .

Чтобы избежать этого предупреждения, мы должны использовать аргумент label , чтобы предоставить метку для каждой строки графика:

 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 в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *