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

时间:2017-07-20 03:32:25

标签: python python-3.x pandas matplotlib dataframe

我有一个包含名称,日期和统计信息的多个列的DataFrame。我正在绘制一段时间内的统计数据到图表并尝试使每行的图例与名称匹配。

每次尝试新内容时,我都会获取统计信息的列名称或名称列中的一个名称重复两次或截断。

我可以使用现有的for循环使这两个名字出现在图例中吗?

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

plt.legend()

此代码在绘图上打印两个单独的行,为每行显示我正在绘制的stat的列名称,而不是person的名称,这是我正在尝试使用label =名称。 for循环中的print语句正确打印名称。

如何将标签设置为每个绘制的行等于正确的名称?

1 个答案:

答案 0 :(得分:3)

你需要抓住那些线句:

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)

enter image description here