关于python:以AM / PM格式绘制Pandas日期时间序列

Plotting Pandas Datetime Timeseries in AM/PM format

我有一个包含时间戳索引的熊猫系列,我想绘制它。

1
2
3
4
5
6
7
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

但当我在熊猫中绘制它时:

1
2
plt.figure(figsize = (15,8))
cubs1m.plot(kind='area')

我希望Y轴上的值以AM/PM格式(8:08PM)显示,而不是军事时间(20:08)。有简单的方法吗?

另外,我该如何控制虱子和标记与熊猫的关系?

事先谢谢。


你的问题有两个要素:

  • 如何控制绘图上的刻度/标签
  • 如何将24小时时间改为12小时时间
  • 轴方法:set_xticksset_yticksset_xticklabelsset_yticklabels控制勾号和标签:

    1
    2
    3
    4
    5
    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小时时间?

    1
    2
    3
    4
    5
    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')))

    这个问题涵盖了用日期绘制的另一种方法:熊猫时间序列绘制设置X轴主刻度线和次刻度线和标签