Matplotlib:如何以时间(HH24:MI)为Y轴绘制图形

问题描述 投票:0回答:2

[我正在尝试绘制一张图表,显示在不同的工作日期每天完成工作的时间。

我的熊猫数据框看起来像...

     business_dt  job_finish_time     job_name
0    19/03/2020   20/03/2020 09:17:08 job_1
1    20/03/2020   21/03/2020 08:10:11 job_1
2    21/03/2020   22/03/2020 14:12:02 job_1
3    19/03/2020   20/03/2020 20:10:04 job_2
4    20/03/2020   21/03/2020 20:06:02 job_2
5    21/03/2020   22/03/2020 21:44:01 job_2

因此,x轴将显示业务dt(日期),y轴将显示作业完成的时间,hh24:mi:ss。

由于我对matplotlib相当陌生,因此在绘制Y轴(hh24:Mi:ss)时遇到困难。你们中的一位可以指导我如何使用matplotlib进行绘制吗?

任何帮助将不胜感激。

谢谢

python pandas matplotlib matplotlib-basemap
2个回答
0
投票

使用datetime.strptime将数据转换为datetime.datetime。请参阅文档here

from datetime import datetime

datetime_y=[datetime.strptime(i, "%d/%m/%Y %H:%M:%S") for i in df['job_finish_time']]
datetime_x=[datetime.strptime(i, "%d/%m/%Y") for i in df['business_dt']]

plt.plot(datetime_x,datetime_y)
plt.show()

0
投票

首先,如@Sameeresque所说,如果尚未将数据转换为日期时间,则需要将其转换为日期时间:

df.business_dt = pd.to_datetime(df.business_dt)
df.job_finish_time = pd.to_datetime(df.job_finish_time)

第二,我发现有必要使用

pd.plotting.register_matplotlib_converters()

为了绘制日期时间。最后,您可以使用Pandas日期时间序列处理来提取时间,然后正常绘制。请注意,您的数据有点奇怪(每天有两个值),因此看起来很奇怪:

df.business_dt = pd.to_datetime(df.business_dt)
df.job_finish_time = pd.to_datetime(df.job_finish_time)

pd.plotting.register_matplotlib_converters()

f, ax = plt.subplots(figsize=(10, 10))
ax.plot(df.business_dt, df.job_finish_time.dt.time)

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.