Python 使用for循环中的变量在pyplot中指定图例值

Python 使用for循环中的变量在pyplot中指定图例值,python,python-3.x,pandas,matplotlib,dataframe,Python,Python 3.x,Pandas,Matplotlib,Dataframe,我有一个数据框,有几列,包括一个名称、一个日期和一个统计数据。我正在将一段时间内的统计数据绘制成一张图表,并试图使每一行的图例与名称匹配 每次尝试新的内容时,我要么得到统计信息的列名,要么从重复两次或截断的名称列中得到一个名称 我是否可以使用现有的for循环使这两个名称都显示在图例中 fig, ax = plt.subplots() for name, group in statistics.groupby('A name'): group.plot(ax=ax, label=name)

我有一个数据框,有几列,包括一个名称、一个日期和一个统计数据。我正在将一段时间内的统计数据绘制成一张图表,并试图使每一行的图例与名称匹配

每次尝试新的内容时,我要么得到统计信息的列名,要么从重复两次或截断的名称列中得到一个名称

我是否可以使用现有的for循环使这两个名称都显示在图例中

fig, ax = plt.subplots()
for name, group in statistics.groupby('A name'):
    group.plot(ax=ax, label=name)
    print(name)

plt.legend()
这段代码在绘图上打印了两行,每行都给出了我正在绘制的统计数据的列名,而不是人名,这就是我试图用label=name做的。for循环中的print语句正确打印名称


如何将每个打印线的标签设置为正确的名称?

您需要抓住这些线手柄:

statistics = pd.DataFrame({'A name':pd.np.random.choice(list('ABCD'),20),'Data Values':np.random.randint(0,100,20)})
fig, ax = plt.subplots()
lh = {}
for name, group in statistics.groupby('A name'):
    lh[name] = group.plot(ax=ax, label=name)
    print(name)

plt.legend(lh)

我没有足够的代表支持投票,但被接受了。非常感谢。你能给我解释一下这是怎么回事吗?确实如此,但我不明白为什么。@vandy。。。好的,我解决了那个问题。:-)谢谢你的接受@vandy我通过创建一个空字典来获取行句柄,对于每个循环,我添加一个字典条目,其中包含一个作为行句柄的对象。然后我将线句柄字典传递给图例以进行绘图。Legend知道如何从线句柄获取颜色、线样式和标签。看,matplotlib无法告诉您我在legend文档上花费了多长时间,但仍然无法理解这一点。我还是个新手,非常感谢你的帮助和解释!