Python绘图时间清单

时间:2019-02-28 01:24:07

标签: python python-3.x pandas matplotlib plot

对不起,我的英语不好。

我有一个列表:

found_time = ['2019-02-28 00:24:16', '2019-02-28 00:22:30', '2019-02-27 08:08:21', ... ... , '2019-02-01 22:21:10', '2019-02-01 00:21:10']

expected plot

我正在尝试制作类似↑的情节表。 Chris A给了我一个代码,代码像↓这样。

    import pandas as pd
    import numpy as np

    s = pd.Series(np.ones(len(found_time)), index=pd.DatetimeIndex(found_time))
    s = s.resample('H').sum()

    plt.scatter(s.index.hour, s.index.date, s=s, color='k')

    # yticks
    yticks = pd.date_range('2019-02-01', '2019-02-28', freq='D')
    plt.yticks(yticks, [y.strftime('%m-%d') for y in yticks])
    plt.ylim('2019-02-01', '2019-02-28')

    # xticks
    xticks = np.arange(24)
    plt.xticks(xticks, ['{0:02d}:00'.format(x) for x in xticks], rotation=45,ha='right')

result plot

,问题在于它仅在准确的时间绘图。 例如)08:45:33-> 08:00,07:12:09-> 07:00

  

问题:您如何更精确地绘制?不是每小时一次。

1 个答案:

答案 0 :(得分:1)

s = pd.Series(np.ones(len(found_time)), index=pd.DatetimeIndex(found_time))

plt.scatter(s.index.time, s.index.date, color='k')

# yticks
yticks = pd.date_range('2019-02-01', '2019-02-28', freq='D')
plt.yticks(yticks, [y.strftime('%m-%d') for y in yticks])
plt.ylim('2019-02-01', '2019-02-28')


# xticks
xticks = pd.date_range('00:00', '23:00', freq='H').time
plt.xticks(xticks, [x.strftime('%H:%M') for x in xticks], rotation=45,ha='right')

请注意:plt.scatter(s.index.time, s.index.date, color='k')

xticks可以与s.index.time

进行比较