2016-11-23 47 views
0

我想繪製一些持續時間,以秒爲單位來表示一些迭代值。我通過減去兩個日期時間值來計算持續時間值。然後,我想用現有工具以非常簡單的方式繪製這些結果。如何使用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浮動的定義轉換。您可以使用:

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

將持續時間轉換爲浮點小時數。看看你的刻度標記如何在format之上,如果你想在你的情節中記錄好時間的標記。您可以將小時(float)轉換爲格式良好的小時字符串。

+0

它不應該是'timedelta.total_seconds()',否則你最終會以一天的模數結束? – Deditos

+0

我糾正了,謝謝。編輯。 – kabanus