【发布时间】: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 并将这两个数字一起转换....
标签: numpy matplotlib timestamp unix-timestamp datetime64