2016-11-23 4 views
0

Я пытаюсь построить продолжительность в секундах относительно некоторых значений итерации. Я вычисляю значения продолжительности, вычитая два значения datetime. Затем я хотел бы построить эти результаты очень просто, используя существующие инструменты.Как построить timedelta как значение с matplotlib

Мой код выглядит следующим образом, но он пока не работает:

#!/usr/bin/env python 

import datetime 
import matplotlib.pyplot as plt 
from numpy import arange 

it = arange(10) 
durations = [datetime.timedelta(hours=h+30) for h in it] 

plt.plot(it, durations) 

plt.show() 

Я получил следующее сообщение об ошибке:

TypeError: float() argument must be a string or a number 

Я знаю, что я могу заставить его работать с помощью DateTime вместо timedelta, но моя цель заключается в длительности графика в часах (около 40 часов), поэтому рендеринг не является хорошим.

ответ

0

Это потому, что нет определенного преобразования для timedelta для плавания. Вы можете использовать:

durations = [datetime.timedelta(hours=h+30).total_seconds/3600.0 for h in it] 

, чтобы преобразовать продолжительность в часы с плавающей запятой. Посмотрите, как на format ваши метки ярлыков, если вы хотите приятные записи часа на вашем участке. Вы можете преобразовать час (float) в красиво отформатированную часовую строку.

+0

Не должно быть 'timedelta.total_seconds()', иначе вы просто закончите с длительностью по модулю в один прекрасный день? – Deditos

+0

Я стою исправленный, спасибо. Ред. – kabanus

Смежные вопросы