如何绘制 unix 时间戳

Posted

技术标签:

【中文标题】如何绘制 unix 时间戳【英文标题】:How to plot unix timestam 【发布时间】:2021-11-23 04:04:16 【问题描述】:

我有一个由 sec.nsec(unix 时间?)确定的时间序列,其中信号为 0 或 1,我想将其绘制成方形信号。目前我有以下代码:

from matplotlib.pyplot import *

time = ['1633093403.754783918', '1633093403.755350983', '1633093403.760918965', '1633093403.761298577', '1633093403.761340378', '1633093403.761907443']
data = [1, 0, 1, 0, 1, 0] 

plot(time, data)
show()

这情节:

在绘制之前是否需要进行任何转换?我不能有日期:时间,因为这些点之间可能有 ns 到 ms

谢谢。

编辑:时间列表的值是字符串

【问题讨论】:

添加 drawstyle='steps-pre' 到绘图工作。但是,这是绘制它的正确方法吗? date = np.datetime64(time, 's') 应该为您提供 numpy datetime64 数组,而 Matplotlib 应该为您提供更好看的刻度。如果您不关心日期,那么您也可以只减去一天或小时之类的开始。 问题是我不是从 python 脚本中获取时间,而是从文件中获取时间。但是,只是为了测试您的建议,我尝试了date = np.datetime64(time[0], 's'),但这会引发错误Could not convert object to NumPy datetime。尽管如此,使用drawstyle='steps-pre' 仍然有效 对不起,您需要先转换为 int 才能传递给 datetime64。所以也许:date = np.datetime64(int(1e6*time[0]), 'us') 我刚刚编辑了这个问题。列表 time 由字符串 (sec.nsec) 组成。我在想的是我应该将 sec 和 nsec 分别转换为 int,然后将 sec 转换为 nsec 并将这两个数字一起转换.... 【参考方案1】:

要将 unix 时间戳字符串转换为 datetime64,您需要先转换为 float,然后使用正确的单位转换为 datetime64:

time = ['1633093403.754783918', '1633093403.755350983', '1633093403.760918965', '1633093403.761298577', '1633093403.761340378', '1633093403.761907443']
time = (np.asarray(time).astype(float)).astype('datetime64[s]')
print(time.dtype)
print(time)

产量:

datetime64[s]
['2021-10-01T13:03:23' '2021-10-01T13:03:23' '2021-10-01T13:03:23'

请注意,纳秒已被删除。如果你想保留那些...

time = (np.asarray(time).astype(float)*1e9).astype('datetime64[ns]')

产量:

datetime64[ns]
['2021-10-01T13:03:23.754783744' '2021-10-01T13:03:23.755351040'
 '2021-10-01T13:03:23.760918784' '2021-10-01T13:03:23.761298688'
 '2021-10-01T13:03:23.761340416' '2021-10-01T13:03:23.761907456']

这一切都有效,因为 datetime64 与 unix 时间戳 (1970-01-01T00:00:00.000000) 具有相同的“纪元”或零

完成此转换后,绘图应该可以正常工作。

【讨论】:

以上是关于如何绘制 unix 时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Shell 将 ISO 8601 时间戳转换为 Unix 时间戳?

如何在 kotlin 中将纪元时间戳转换为 unix 十六进制时间戳?

如何使用 MySQL 存储 UNIX 时间戳

如何生成 Unix 时间戳?

如何在scala中将ISO 8601时间戳转换为unix时间戳?

Java 如何获得 Unix 时间戳