python - 在 for 循环中使用变量在 pyplot 中分配图例值

标签 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()

这段代码在图表上打印了两条单独的线,为每条线提供了我正在绘制的统计数据的列名,而不是人名,这就是我试图用 label=姓名。 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)

enter image description here

关于python - 在 for 循环中使用变量在 pyplot 中分配图例值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45204631/

相关文章:

python - "File not found"将 manage.py 与 pytest-django 一起使用

python - 使用 splinter python 保存图像元素

python - 如何将python代码发送到另一台机器执行?

python-3.x - 属性错误 : 'CRF' object has no attribute 'keep_tempfiles'

python - 将 Matplotlib 图形嵌入 Tkinter 在 Python 3.5 上崩溃

python - 文件操作不适用于原子

最适合构建双向市场的 Python 框架

python - 如何使用所有 xticks 绘制 pandas 多索引数据帧

python - 如何将标签添加到 pandas dataframe.to_html 链接,以便 url 的绝对路径不会显示在 html 中,而是显示在标签中?

Python - 使用数据库中的图表创建 pdf 报告的过程是什么?