2011-12-03 23 views
10

Estoy tratando de trazar un histograma de los valores de datetime.time. Donde estos valores se discretizan en rebanadas de cinco minutos. Los datos se ven así, en una lista:histograma de la trama de datetime.time python/matplotlib

['17: 15: 00 ', '18: 20: 00', '17: 15: 00 ', '13: 10: 00', '17: 45:00 ', '18: 20: 00']

Me gustaría trazar un histograma, o alguna forma de gráfico de distribución para que el número de ocurrencias de cada momento se pueda examinar fácilmente.

NB. Dado que cada vez está discretizado, entonces. El número máximo de contenedores en un histograma sería 288 = (60/5 * 24)

He consultado matplotlib.pyplot.hist. Pero requiere algún tipo de escalar continuo

+1

El más simple podría ser para convertir los tiempos de segundos y utilizar esto para hacer el histograma. Luego puede cambiar las etiquetas del histograma manualmente. –

+1

O convierta los tiempos en contenedores directamente = segundos/300, y trace el recuento de cada contenedor. – Dave

Respuesta

6

Hice lo que dijo David Zwicker y usé segundos, y luego cambié el eje x. Veré lo que dijo Dave sobre 'contenedores'. Esto funciona aproximadamente y da una trama de barra por hora para comenzar.

def chart(occurance_list): 
    hour_list = [t.hour for t in occurance_list] 
    print hour_list 
    numbers=[x for x in xrange(0,24)] 
    labels=map(lambda x: str(x), numbers) 
    plt.xticks(numbers, labels) 
    plt.xlim(0,24) 
    plt.hist(hour_list) 
    plt.show() 

frequency of lowest daily exahange rate for GBPUSD

+0

Aceptar: lo que David Zwicker y @Dave dijeron –

+0

esto es incorrecto. Los contenedores son menos de 24. –

-5

tiene que convertir los datos en dos variables y luego puede usar plotlab para trazar en histogramas.

+2

Realmente no entiendo lo que quieres decir aquí. –