我有一个包含多个列的 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)
关于python - 在 for 循环中使用变量在 pyplot 中分配图例值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45204631/