2013-03-18 9 views
6

Mam wektor z datami (datetime) w python. W jaki sposób mogę wykreślić histogram z 15-minutowymi pojemnikami na wystąpienie tego wektora?histogram z pojemnikami czasowymi z datetime wektora

Oto co zrobiłem:

StartTime = [] 
for b in myEvents: 
    StartTime.append(b['logDate'].time()) 

Jak widać, ja konwertowane daty w czasie. (Dostaję myEvents z kwerendy MongoDB)

fig2 = plt.figure() 
ax = fig2.add_subplot(111) 
ax.grid(True,which='both') 
ax.hist(StartTime,100) 

Błąd pojawia się:

TypeError: can't compare datetime.time to float 

Rozumiem błąd, ale nie mogę dowiedzieć się, jak to naprawić.

Dziękuję bardzo za pomoc

+0

Musisz przekształcić swój 'czas' w' float', ponieważ jest to jedyna rzecz, którą rozumie funkcja histogramowania. Możesz znaleźć [ten kod] (http://ubuntuforums.org/showthread.php?t=700216) jako pomocny. – Floris

+0

Prawdopodobny duplikat: http://stackoverflow.com/questions/8369584/plot-histogram-of-datetime-time-python-matplotlib – askewchan

+1

@askewchan Już przeczytałem to pytanie, ale nie mogłem go użyć – otmezger

Odpowiedz

3

Jeśli chcesz kosza przez godziny, minuty lub sekundy, powinno być bardzo proste:

ts = np.array([ datetime.time(random.randint(24),*random.randint(60,size=2)) for i in range(100) ]) 
hist([t.hour for t in ts], bins = 24) # to bin by hour 

Ponadto, za piętnaście minut pojemników, ale Problem tutaj jest teraz jednostką są dziesiętne godziny:

hist([t.hour + t.minute/60. for t in ts], bins = 24*60/15) 
Powiązane problemy