在AM/PM格式下绘制Pandas日期时间时间序列

4

我有一个带有时间戳索引的pandas系列,我想要绘图。

print example.head()

2015-08-11 20:07:00-05:00    26
2015-08-11 20:08:00-05:00    66
2015-08-11 20:09:00-05:00    71
2015-08-11 20:10:00-05:00    63
2015-08-11 20:11:00-05:00    73

但是当我使用Pandas绘制它时,代码如下:
plt.figure(figsize = (15,8))
cubs1m.plot(kind='area')

我希望y轴上的值以AM/PM格式 (8:08PM) 而不是24小时制(20:08)显示。有什么简单的方法可以做到这一点吗?

另外,我该如何使用 pandas 来控制刻度和标签数量?

提前感谢。

1个回答

1

你的问题有两个部分:

  1. 如何控制图表上的刻度/标签数量
  2. 如何将24小时制时间更改为12小时制

轴方法 set_xticksset_yticksset_xticklabelsset_yticklabels 控制刻度和标签:

import matplotlib.pyplot as plt

plt.plot(range(10), range(10))
plt.gca().set_xticks(range(0,10,2))
plt.gca().set_xticklabels(['a{}'.format(ii) for ii in range(0,10,2)])

要更改时间格式,请使用pd.datetime.strftime:如何将24小时制转换为12小时制?
import pandas as pd

data = pd.Series(range(12), index=pd.date_range('2016-2-3 9:00','2016-2-3 20:00', freq='H'))
ax = data.plot(xticks=data.index[::2])
ax.set_xticklabels(data.index[::2].map(lambda x: pd.datetime.strftime(x, '%I %p')))

这个问题涵盖了一种使用日期绘图的替代方法:Pandas时间序列绘图设置x轴主要和次要刻度和标签

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接