如何在 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 创建线图,但我们收到警告No handles with labels found to put in legend 。
为了避免出现此警告,我们必须使用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 创建线图,但我们收到警告No handles with labels found to put in legend 。
为了避免出现此警告,我们需要在将线条添加到图中后使用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 中的其他常见错误:
如何修复 Pandas 中的 KeyError
如何修复:ValueError:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播