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

时间:2015-08-12 04:11:10

标签: python pandas datetime plot date-arithmetic

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

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

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

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

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

另外,我如何控制蜱的数量和用熊猫绘制的标签数量?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的问题有两个要素:

  1. 如何控制情节中的刻度/标签数量
  2. 如何将24小时制更改为12小时制
  3. 轴方法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:How can I convert 24 hour time to 12 hour time?

    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 timeseries plot setting x-axis major and minor ticks and labels