【问题标题】:Plot elapsed time on x axis, python panda matplotlib在 x 轴上绘制经过时间,python panda matplotlib
【发布时间】:2022-08-08 16:29:08
【问题描述】:

我尝试在 x 轴上绘制经过时间 hh:mm:ss 的数据。 hh 应该是一个持续的数字(不仅仅是 24h)。导入的 x 原始数据格式为 yyyy-mm-dd hh:mm:ss,x2 的减法有效。

import pandas as pd
import matplotlib.pyplot as plt

...

mydata = pd.read_excel(data_path + data_file, skiprows=2)

x = mydata.iloc[17:,0].values
y = mydata.iloc[17:,1].values

x2 = x - x[0]
plt.plot(x2,y)
plt.show()

但是有一个数据类型问题:

*TypeError: float() argument must be a string or a number, not \'datetime.timedelta\'*

我该如何解决这个问题? 谢谢

  • 类方法total_seconds() 有帮助吗?
  • x2.total_seconds() 然后如何以 hh:mm:ss 格式绘制持续小时数?
  • 这回答了你的问题了吗? Plot datetime.timedelta using matplotlib and python
  • 不是真的,请帮我看看我的示例代码,谢谢
  • 那么,您能否提供实际产生错误的代码。目前,您甚至没有在示例中导入日期时间。

标签: python matplotlib plot time elapsed


【解决方案1】:

我将整个脚本减少到最小,现在我没有这种类型的错误......我必须在第二步中查看为什么以及何时收到此错误。

在下一个代码示例中,没有错误。当我从 x[0] 中减去所有 x 值时,x 轴上的值不是时间格式,见图。

import pandas as pd
import matplotlib.pyplot as plt
import time
import datetime
from datetime import timedelta

data_path   = "C:/.../"
data_file = "..."
row_data_start = 0

mydata = pd.read_excel(data_path + data_file, skiprows=2)

x = mydata.iloc[row_data_start:,0].values
y1 = mydata.iloc[row_data_start:,1].values
y5 = mydata.iloc[row_data_start:,4].values
y4 = mydata.iloc[row_data_start:,3].values
 
x = x-x[0]

fig, ax = plt.subplots(ncols=1, nrows=2, dpi=300)

twin1 = ax[0].twinx()
twin1ax1 = ax[1].twinx()

p1, = ax[0].plot(x, y1, ".k-")
p4, = twin1.plot(x, y4, ".b-")
ax[1].plot(x, y5, "r-")

plt.show()

控制台打印(x):

[           0  10000000000  20000000000  30000000000  40000000000
  50000000000  60000000000  70000000000  80000000000  90000000000
 100000000000 110000000000 120000000000 130000000000 140000000000
 150000000000 160000000000 170000000000 180000000000 190000000000
 200000000000]

输入 x 值的变量浏览器:

0   2022-08-04 08:56:22
1   2022-08-04 08:56:32
2   2022-08-04 08:56:42
.
.
.

如何将经过时间从 x[0] 格式化为 hh:mm:ss?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-17
    • 2020-09-18
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    相关资源
    最近更新 更多