如何在 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:操作数无法与形状一起广播

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注