Como corrigir em python: não foram encontrados identificadores com rótulos para colocar na legenda
Um aviso que você pode encontrar ao usar o matplotlib é:
No handles with labels found to put in legend.
Esse aviso geralmente ocorre por um dos dois motivos:
1. Você não conseguiu criar rótulos para os dados do gráfico.
2. Você tentou criar uma legenda antes de criar um gráfico.
Os exemplos a seguir mostram como evitar esse aviso em ambos os cenários.
Exemplo 1: Você não conseguiu criar rótulos para os dados do gráfico.
Suponha que estejamos tentando usar o seguinte código para criar um gráfico de linhas em matplotlib com legenda e rótulos:
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 cria o gráfico de linhas, mas recebemos o aviso No handles with labels found to put in legend .
Para evitar esse aviso, devemos usar o argumento label para fornecer um rótulo para cada linha do gráfico:
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 ()
Observe que uma legenda é criada com rótulos e não recebemos nenhum aviso desta vez.
Exemplo 2: Você tentou criar uma legenda antes de criar um gráfico.
Suponha que estejamos tentando usar o seguinte código para criar um gráfico de linhas em matplotlib com legenda e rótulos:
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 cria o gráfico de linhas, mas recebemos o aviso No handles with labels found to put in legend .
Para evitar este aviso, precisamos usar plt.legend() após adicionar as linhas ao gráfico:
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 ()
Uma legenda é criada com rótulos e desta vez não recebemos nenhum aviso.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas