所以回溯告诉你问题所在。它试图将日期解析为时间,这是您解析以下行中的数据的结果:data= np.loadtxt(‘daily_count.csv’, delimiter=’,’,
dtype={‘names’: (‘date’, ‘time’),’formats’: (‘S10’, ‘S10’)} )
x = [DT.datetime.strptime(key,”%m-%d-%y”) for (key, value) in data ]
y = [DT.datetime.strptime(key,”%h:%m”) for (key, value) in data]
有多种解决方案,但问题的根源在于,当您使用loadtxt并定义名称和数据类型时,它会返回元组列表,即
^{pr2}$
所以当你在上面循环时,你实际上一直在访问日期:>>> print [key for (key, value) in data]
[’04-02-15′, ’04-03-15′, ’04-04-15′, ’04-05-15′, ’04-06-15′, ’04-07-15′]
所以您试图将’04-02-15’转换为’%h:%m’格式,这当然行不通。在
为了达到这一点,您可以使用zip函数取消对已解析数据的合并。例如print map(list, zip(*data))
[’04-02-15′, ’04-03-15′, ’04-04-15′, ’04-05-15′, ’04-06-15′, ’04-07-15′]
[’11:15′, ’09:35′, ’09:10′, ’18:05′, ’10:30′, ’09:20′]
此外,您还需要检查通过日期的格式,例如”%h:%m”将无法工作,因为%h不存在,%m表示月份。你可以在文档上找到一个很好的摘要,或者在这里:http://strftime.org/。在
或者说正题:import numpy as np
from pylab import *
import matplotlib.pyplot as plt
import datetime as DT
data= np.loadtxt(‘daily_count.csv’, delimiter=’,’,
dtype={‘names’: (‘date’, ‘time’),’formats’: (‘S10’, ‘S10’)} )
dates, times = map(list, zip(*data))
print dates, times
x = [DT.datetime.strptime(date,”%m-%d-%y”) for date in dates]
y = [DT.datetime.strptime(time,”%H:%M”) for time in times]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.grid()
plt.plot(x,y)
plt.xlabel(‘Date’)
plt.ylabel(‘Time’)
plt.title(‘Peak Time’)
plt.show()
给出了以下图表:
Original: https://blog.csdn.net/weixin_34019786/article/details/112927290
Author: 婧在机器学习中
Title: python绘制时间_在matplotlib中绘制时间与日期
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/768800/
转载文章受原作者版权保护。转载请注明原作者出处!