使用matplotlib和python绘制datetime.timedelta
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用matplotlib和python绘制datetime.timedelta,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2221字,纯文字阅读大概需要4分钟。
内容图文
![使用matplotlib和python绘制datetime.timedelta](/upload/InfoBanner/zyjiaocheng/705/2a6d33c5ced743b3b3babf9c810bd648.jpg)
我正在处理一项任务,我需要计算每天花费的时间,然后使用条形图来表示时间,所以对于这个任务,我使用python并且能够在每天花费时间,并将其存储在列表中“time_list”,现在我不明白如何使用matplotlib函数绘制这个.
问题是,此列表包含datetime.timedelta类值.
例:
time_list
[datetime.timedelta(0, 23820), datetime.timedelta(0, 27480), datetime.timedelta(0, 28500), datetime.timedelta(0, 24180), datetime.timedelta(0, 27540), datetime.timedelta(0, 28920), datetime.timedelta(0, 28800), datetime.timedelta(0, 29100), datetime.timedelta(0, 29100), datetime.timedelta(0, 24480), datetime.timedelta(0, 27000)]
这些价值意义如下:
Total Time Spent on 2 is 6:37:00
Total Time Spent on 3 is 7:38:00
Total Time Spent on 4 is 7:55:00
Total Time Spent on 5 is 6:43:00
Total Time Spent on 8 is 7:39:00
Total Time Spent on 9 is 8:02:00
Total Time Spent on 10 is 8:00:00
Total Time Spent on 11 is 8:05:00
Total Time Spent on 12 is 8:05:00
Total Time Spent on 15 is 6:48:00
Total Time Spent on 16 is 7:30:00
有人可以帮我策划这个.
提前致谢
解决方法:
虽然matplotlib原则上可以处理日期时间对象,但条形图无法直接解释它们.因此,可以在timedeltas中添加一个任意日期,并使用matplotlib.dates.date2num()转换为数字.然后使用DateFormatter启用漂亮的ticklabels.
import numpy as np
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
days = [2, 3, 4, 5, 8, 9, 10, 11, 12, 15, 16]
time_list = [datetime.timedelta(0, 23820), datetime.timedelta(0, 27480),
datetime.timedelta(0, 28500), datetime.timedelta(0, 24180),
datetime.timedelta(0, 27540), datetime.timedelta(0, 28920),
datetime.timedelta(0, 28800), datetime.timedelta(0, 29100),
datetime.timedelta(0, 29100), datetime.timedelta(0, 24480),
datetime.timedelta(0, 27000)]
# specify a date to use for the times
zero = datetime.datetime(2018,1,1)
time = [zero + t for t in time_list]
# convert datetimes to numbers
zero = mdates.date2num(zero)
time = [t-zero for t in mdates.date2num(time)]
f = plt.figure()
ax = f.add_subplot(1,1,1)
ax.bar(days, time, bottom=zero)
ax.yaxis_date()
ax.yaxis.set_major_formatter(mdates.DateFormatter("%H:%M"))
# add 10% margin on top (since ax.margins seems to not work here)
ylim = ax.get_ylim()
ax.set_ylim(None, ylim[1]+0.1*np.diff(ylim))
plt.show()
内容总结
以上是互联网集市为您收集整理的使用matplotlib和python绘制datetime.timedelta全部内容,希望文章能够帮你解决使用matplotlib和python绘制datetime.timedelta所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。