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

如何在Bokeh中对齐不同采样周期的两条信号曲线?

解决两个不同采样周期信号的时间对齐问题

核心方案是放弃datetime类型,直接用数值型的物理时间作为X轴(以秒为单位的浮点数),这样既能保证飞秒级的精度,又能让两个信号在时间维度上准确对齐。

步骤说明

  • 统一时间单位:将飞秒、纳秒转换为国际单位制的秒
    • 数据集a的采样周期:416飞秒 = 416e-15 秒
    • 数据集b的采样周期:25纳秒 = 25e-9 秒
  • 为每个数据点生成对应的绝对时间(默认两个信号从同一时刻开始采集,若起始时间不同,给其中一个时间轴添加对应偏移量即可)
  • 用计算出的时间轴替代原索引作为X轴绘图

完整代码示例

from bokeh.plotting import figure, show
import numpy as np

# 原始数据集
a = [0,1,2,5,4,3,1]
b = [9,2,1,3,6,8,5]

# 采样周期(转换为秒)
sampling_a = 416e-15  # 416飞秒
sampling_b = 25e-9     # 25纳秒

# 生成时间轴数组
time_a = np.arange(len(a)) * sampling_a
time_b = np.arange(len(b)) * sampling_b

# 创建图表
p = figure(plot_width=800, plot_height=400, x_axis_label="时间(秒)", y_axis_label="信号值")

# 绘制两个信号
p.line(time_a, a, line_color="blue", legend_label="信号a(416fs采样)")
p.line(time_b, b, line_color="red", legend_label="信号b(25ns采样)")

# 优化X轴显示(启用科学计数法提升可读性)
p.xaxis.formatter.use_scientific = True

show(p)

注意事项

  1. 时间跨度差异处理:信号a的总时长仅约6*416e-15 ≈ 2.5e-12秒,而信号b的总时长是6*25e-9 = 1.5e-7秒,直接绘图时a的信号会集中在X轴最左端,可通过Bokeh的框选缩放工具放大左端区域查看细节。
  2. 起始时间偏移调整:如果两个信号不同时触发,只需在其中一个时间轴上加上对应偏移量(比如信号b比a晚触发1e-10秒,则time_b = np.arange(len(b)) * sampling_b + 1e-10)。
  3. 无numpy替代方案:不想用numpy的话,可用列表推导生成时间轴:
    time_a = [i * sampling_a for i in range(len(a))]
    time_b = [i * sampling_b for i in range(len(b))]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:32:31