You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用matplotlib绘制Unix时间戳格式的0-1方波时序信号

问题解决方案

1. 必须做时间转换的原因

你当前代码中time列表存储的是字符串类型,matplotlib默认会将其识别为离散的分类标签,只会按列表顺序均匀排列x轴刻度,不会根据时间数值的真实差计算间距,完全无法体现纳秒/毫秒级的间隔差异。

2. 转换方法

不需要转成标准datetime格式,直接将字符串转为float类型即可,Unix时间戳的浮点形式可以完整保留纳秒级精度,完全满足你的需求。

3. 方波绘制优化

默认的线性插值折线不会得到方波效果,需要给plot函数添加drawstyle="steps-post"(或steps-pre,根据你需要的信号跳变位置选择)参数,直接生成阶梯状方波。

修正后代码

from matplotlib.pyplot import *

# 字符串转浮点型时间戳
time = [float(t) for t in ['1633093403.754783918', '1633093403.755350983', '1633093403.760918965', '1633093403.761298577', '1633093403.761340378', '1633093403.761907443']]
data = [1, 0, 1, 0, 1, 0] 

# 指定阶梯绘制模式,drawstyle可选steps-pre/steps-post/steps-mid
plot(time, data, drawstyle='steps-post')
# 可选:x轴刻度格式优化,避免显示科学计数法
gca().xaxis.set_major_formatter(lambda x, pos: f"{x:.9f}")
show()

可选优化说明

如果觉得x轴显示的长串数值可读性差,可以把时间转为相对于第一个时间点的偏移量(单位取毫秒/微秒),代码调整如下:

# 以第一个时间点为零点,偏移量单位为微秒
base_t = time[0]
time_offset = [(t - base_t)*1e6 for t in time]
plot(time_offset, data, drawstyle='steps-post')
xlabel('时间偏移量 (μs)')

内容的提问来源于stack exchange,提问作者aripod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:09:02