Pandas 绘图:如何格式化 datetimeindex?
Pandas plotting: How to format datetimeindex?
几年来,我正在使用 15 分钟的日期时间索引从数据框中绘制条形图。
使用此代码:
df_Vol.resample(
'A',how='sum'
).plot.bar(
title='Sums per year',
style='ggplot',
alpha=0.8
)
不幸的是,X 轴上的刻度现在显示为带有完整的时间戳,如下所示:2009-12-31 00:00:00
.
我希望保持绘图的代码简短,但我找不到一种简单的方法来将时间戳简单地格式化为绘图的年份 (2009...2016
)。
有人可以帮忙吗?
由于似乎无法在 Pandas df.plot() 中格式化日期,我决定创建一个新的数据框并从中绘制。
下面的解决方案对我有用:
df_Vol_new = df_Vol.resample('A',how='sum')
df_Vol_new.index = df_Vol_new.index.format(formatter=lambda x: x.strftime('%Y'))
ax2 =df_Vol_new.plot.bar(title='Sums per year',stacked=True, style='ggplot', alpha=0.8)
我想出了一个替代方法(更好,至少对我而言)是将以下内容添加到 df_Vol_new.plot()
命令中:
plt.legend(df_Vol_new.index.to_period('A'))
这样您可以保留 df_Vol_new.index
日期时间格式,同时获得更好的绘图。
几年来,我正在使用 15 分钟的日期时间索引从数据框中绘制条形图。 使用此代码:
df_Vol.resample(
'A',how='sum'
).plot.bar(
title='Sums per year',
style='ggplot',
alpha=0.8
)
不幸的是,X 轴上的刻度现在显示为带有完整的时间戳,如下所示:2009-12-31 00:00:00
.
我希望保持绘图的代码简短,但我找不到一种简单的方法来将时间戳简单地格式化为绘图的年份 (2009...2016
)。
有人可以帮忙吗?
由于似乎无法在 Pandas df.plot() 中格式化日期,我决定创建一个新的数据框并从中绘制。
下面的解决方案对我有用:
df_Vol_new = df_Vol.resample('A',how='sum')
df_Vol_new.index = df_Vol_new.index.format(formatter=lambda x: x.strftime('%Y'))
ax2 =df_Vol_new.plot.bar(title='Sums per year',stacked=True, style='ggplot', alpha=0.8)
我想出了一个替代方法(更好,至少对我而言)是将以下内容添加到 df_Vol_new.plot()
命令中:
plt.legend(df_Vol_new.index.to_period('A'))
这样您可以保留 df_Vol_new.index
日期时间格式,同时获得更好的绘图。