2016-11-23 1 views
0

일부 반복 값에 대한 지속 시간을 초 단위로 표시하려고합니다. 두 datetime 값을 빼서 기간 값을 계산합니다. 그런 다음 기존 도구를 사용하여 매우 간단한 방법으로 이러한 결과를 계획하고 싶습니다.matplotlib로 timedelta를 값으로 플롯하는 방법

내 코드는 다음이지만 아직 작동하지 않습니다

#!/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 

나는이 날짜를 대신 사용하여 작업 할 수 있다는 것을 알고 timedelta하지만 내 목표는 렌더링 시간이 길어서 (약 40 시간) 렌더링 시간이 충분하지 않기 때문입니다.

답변

0

timedelta에서 float으로의 변환이 정의되어 있지 않기 때문입니다. 다음을 사용할 수 있습니다.

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

부동 소수점 시간으로 변환 할 수 있습니다. 플롯에서 멋진 시간 표기법을 원한다면 format 눈금 라벨을보십시오. 시간 (float)을 정돈 된 시간 문자열로 변환 할 수 있습니다.

+0

'timedelta.total_seconds()'가 아니면 안되나요? 언젠가는 모듈로드가 끝나기 만합니까? – Deditos

+0

고마워. 고마워. 편집 됨. – kabanus

관련 문제