2013-07-05 7 views
1

Хорошо, я искал много о нем, но до сих пор я не получил его достаточно хорошо ... Пусть у меня есть:Plotting список часов

listHours = ['00:00:000-10:00:000', '10:00:000-20:00:000', '20:00:000-30:00:000', '30:00:000-40:00:000', '40:00:000-50:00:000', '50:00:000-00:00:000'] 
listNumbers = ['0.01', '0.02', '0.03', '0.05', '0.05', '0.03'] 

и я хочу:

plt.plot(listHours, listNumbers) 
plt.show() 

Matplotlib не принимает этот списокHours ("ValueError: недействительный литерал для float(): 00: 00: 000-10: 00: 000"), когда я использую тики. Я получаю эту ошибку: «Аргумент типаError: float() должен быть строка или число «Я не знаю, так ли это, потому что я использую эту вещь, что неправильно или что-то еще ... любая идея? Я расстроен здесь.

Спасибо.

+2

Почему ваши часы в формате '«час: мин: сек - час: мин: сек»'? Разве они не должны быть «hr: min: sec»? В течение одного часа ('hr: min: sec') вы можете сделать' matplotlib.dates.datestr2num () ', чтобы преобразовать его в нечто, что может интерпретировать matplotlib. – wflynny

+0

Итак ... Я не выбрал это. Эти данные пришли ко мне так, бог знает почему. – user

ответ

2

Для этого вы можете использовать команду xticks. Смотрите следующий фрагмент кода -

>>> listHours = ['00:00:000-10:00:000', '10:00:000-20:00:000', '20:00:000-30:00:000','30:00:000-40:00:000', '40:00:000-50:00:000', '50:00:000-00:00:000'] 
>>> listNumbers = ['0.01', '0.02', '0.03', '0.05', '0.05', '0.03'] 
>>> listNumbers = [float(elem) for elem in listNumbers] # Convert to a list of floats. 
>>> plt.plot(listNumbers) 
>>> plt.xticks(range(len(listHours)), listHours, size='small') 
>>> plt.show() 

Это дает вам рисунок как этот

Plot figure

+0

Вы преобразовали 'listNumbers' в список чисел, чтобы получить этот сюжет? – unutbu

+0

Я пропустил это, но кажется, что линии строят хорошо. Я преобразую его в список чисел. –

+0

yaaaay! Я на самом деле пытался сделать что-то подобное, но я считаю, что мой yAxis был неправ. Большое спасибо! – user