我有一些麻烦来定义我想要绘制的日期范围。我有一个包含数据的大文件;每行中的第一个条目是时间戳(每15分钟),格式如下:
2014-06-05 17:30:00
因此,为了能够在我的图中选择日期范围,我将字符串日期值转换为日期和时间值:
import pylab # Plotting functions
import matplotlib.dates # get date plotting functions
import datetime # get date functions
(skipping the list of column headers and the dictionary variables)
meteodata = data file with one col. TIMESTAMP
#Create arrays filled with zeros and proper length
YY = scipy.zeros(len(meteodata['TIMESTAMP']))
MM = scipy.zeros(len(meteodata['TIMESTAMP']))
DD = scipy.zeros(len(meteodata['TIMESTAMP']))
HH = scipy.zeros(len(meteodata['TIMESTAMP']))
mm = scipy.zeros(len(meteodata['TIMESTAMP']))
ss = scipy.zeros(len(meteodata['TIMESTAMP']))
numdatetime = scipy.zeros(len(meteodata['TIMESTAMP']))
# Create emty array
dateval = []
#Convert string date values to date and time values
for i in range (0,len(meteodata['TIMESTAMP']),1):
datestring = meteodata['TIMESTAMP'][i]
YY[i] = int(datestring[1:5])
MM[i] = int(datestring[6:8])
DD[i] = int(datestring[9:11])
HH[i] = int(datestring[12:14])
mm[i] = int(datestring[15:17])
ss[i] = int(datestring[18:20])
#create a datetime object holding dates and times
dt = datetime.datetime(int(YY[i]),int(MM[i]),int(DD[i]),int(HH[i]),
int(mm[i]),int(ss[i]))
dateval.append(dt)
#create a numerical date value
numdatetime[i]=matplotlib.dates.date2num(dt)
# get doy of year numbers
doy = scipy.zeros(len(meteodata['TIMESTAMP']))
for i in range (0,len(meteodata['TIMESTAMP']),1):
doy[i] = int(datetime.date.fromordinal(int(numdatetime[i])).strftime("%j"))
所以我完成了所有的日期和时间,但是如何在我的情节中访问某些日期,月份或年份?例如,我想绘制XXX和YYY与a)2015年7月(按月和年)b)2015年7月1日至2015年7月20日(因此按预定日期范围)和c)每小时(尽管有新的数据条目)每15分钟加上时间戳) - 我在哪里以及如何修改我的代码?
pylab.ylabel(r'${\rm XXX and YYY}$', fontsize=8)
pylab.xlabel(r'${\rm Date}$', fontsize=12)
# Plot XXX and YYY versus time
pylab.plot_date(howtimegoeshere, XXX, '+b', label= 'XXX', linewidth=0.5, markersize=4)
pylab.plot_date(howtimegoeshere, YYY, '-r', label= 'YYY', linewidth=0.5, markersize=2)
我如何更改'howtimegoeshere'?作为一个蟒蛇新手,那些时间命令仍然让我很困惑: - /感谢各种建议!
问题已解决:see here