我试图以秒为单位绘制相对于某些迭代值的持续时间。我通过减去两个日期时间值来计算持续时间值。然后,我想使用现有工具以非常简单的方式绘制这些结果。
我的代码如下,但它还没有工作:
#!/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 :(得分:3)
那是因为没有定义的timedelta转换为float。您可以使用:
durations = [datetime.timedelta(hours=h+30).total_seconds()/3600.0 for h in it]
将持续时间转换为浮点小时。如果你想要在你的情节上使用漂亮的小时表示法,请查看如何format你的刻度标签。您可以将小时(浮动)转换为格式良好的小时字符串。
(编辑:将.total_seconds
更改为.total_seconds()