2013-04-15 4 views
0

У меня есть набор списков python, и я хочу построить график с matplotlib таким образом, чтобы список времени был нанесен по оси x, а список данных нанесен на ось y.Данные графика относительно времени по оси X

код, написанный мной похож на:

time =['16:40:48','16:45:48','16:50:48','16:55:48','17:00:48','17:05:48','17:10:48'] 

data1 = ['702','683','696','666','688','694','699'] 


fig = plt.figure(figsize=(20.0, 16.0)) 

ax = fig.add_subplot(1,1,1) 

dates = matplotlib.dates.date2num(time) 


ax.plot_time(dates,data1) 


ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=5)) 
ax.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M:%S")) 
plt.grid(True) 

plt.show() 

Но это дает мне ошибку говоря:

AttributeError: 'ул' объект не имеет атрибута 'toordinal'

I заглянули в somne ​​post относительно подобной проблемы, но не смогли найти желаемое решение для моей проблемы.

ответ

0

Из документации:

matplotlib.dates.date2num(d): 
d is either a datetime instance or a sequence of datetimes. 

Вы должны преобразовать ваши TIME- строки к DateTime объекты первого. Во всяком случае, вам не нужно будет преобразовывать их в «nums», просто запишите их, и все в порядке.

Для создания DateTimes, просто использовать список понимание:

datetimes = [datetime.datetime.strptime(t, "%H:%M:%S") for t in time] 

, а затем

ax.plot(datetimes, data1) 
Смежные вопросы