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