如何在y轴上绘制日期,在x轴上绘制小时?

时间:2019-02-27 17:35:51

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

enter image description here

你好!

我有以下离散列表: found_time = ['2019-02-28 00:24:16','2019-02-28 00:22:30','2019-02-28 00:20:16','2019-02-28 00:19: 25','2019-02-28 00:18:11','2019-02-27 23:09:45','2019-02-27 22:52:09','2019-02-27 22: 50:05','2019-02-27 22:44:31','2019-02-27 18:04:18','2019-02-27 08:08:21',... ,'2019-02-01 22:21:10','2019-02-01 00:21:10']

我想通过使用matplotlib或其他方式将点绘制为链接的图像。

我设法通过使用

分隔日期和时间
data = panda.to_datetime(found_time, yearfirst=True)
x = data.time
y = data.date

我尝试了plt.xlim(["00:00:00", "23:59:59"]),但是间隔是随机的。

问题:如何设置间隔为1天的y轴02-01〜02-28和x轴 00:00〜24:00(或23:59),间隔1小时?

1 个答案:

答案 0 :(得分:0)

您可以先尝试将日期时间列表转换为pandas.Series,然后重新采样至小时。像这样:

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')