【问题标题】:Legend on pandas plot of time series shows only "None"时间序列的熊猫图上的图例仅显示“无”
【发布时间】:2018-04-07 21:35:33
【问题描述】:

data 是一个 pandas 数据框,在具有多个属性的条目上具有日期时间索引。这些属性之一称为STATUS。我试图创建一个按STATUS 属性细分的每日条目数图。

我第一次尝试使用 pandas.plot:

for status in data["STATUS"].unique():
    entries = data[data["STATUS"] == status]
    entries.groupby(pandas.TimeGrouper("D")).size().plot(figsize=(16,4), legend=True)

结果:

我应该如何修改上面的代码,以便图例显示曲线属于哪个状态?

此外,请随意提出一种不同的方法来实现这种可视化(按时间间隔对时间序列进行分组、计数条目并按条目的属性进行细分)。

【问题讨论】:

标签: python pandas matplotlib time-series data-visualization


【解决方案1】:

我相信通过对您的代码进行以下更改,您将得到您想要的:

fig, ax = plt.subplots()    
for status in data["STATUS"].unique():
        entries = data[data["STATUS"] == status]
        dfPlot = pandas.DataFrame(entries.groupby(pandas.TimeGrouper("D")).size())
        dfPlot.columns=[status]
        dfPlot.plot(ax=ax, figsize=(16,4), legend=True)

发生的情况是size 函数的输出为您提供了一个Series 类型,但其列中没有名称。因此,从 Series 创建一个 Dataframe 并更改列名就可以了。

【讨论】:

  • 每次迭代只给我一个图 - 需要弄清楚如何将它们组合成一个图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 2012-10-13
  • 1970-01-01
相关资源
最近更新 更多