如何使用matplotlib将timedelta绘制为值

2024-04-27 14:49:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图绘制一个持续时间(秒)与一些迭代值的关系图。我通过减去两个datetime值来计算duration值。然后,我想使用现有工具以非常简单的方式绘制这些结果。

我的代码如下,但还不起作用:

#!/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小时)为单位绘制持续时间,因此渲染效果不好。


Tags: 工具代码importdatetime关系方式绘制it
1条回答
网友
1楼 · 发布于 2024-04-27 14:49:46

这是因为没有定义timedelta到float的转换。您可以使用:

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

将持续时间转换为浮点小时。如果你想在你的情节中使用“美好的一小时”符号,看看如何format你的记号标签。可以将小时(浮点)转换为格式良好的小时字符串。

(编辑:将.total_seconds更改为.total_seconds()

相关问题 更多 >