核心用法
pywayne-plot 是基于 Matplotlib 的增强型时频分析可视化工具包,专为科研与工程场景设计。核心功能围绕 SpecgramAxes 投影展开,提供比原生 specgram 更灵活的控制能力。
使用流程三步走:
1. 注册投影:调用 regist_projection() 激活自定义坐标系
2. 创建谱图:通过 ax.specgram() 生成时频图,支持 projection='z_norm'
3. 参数调优:利用 get_specgram_params() 自动计算最优 STFT 参数
关键特性包括:
- 多单位频率转换(Hz/bpm/kHz),特别适合心率(PPG)、呼吸等生理信号
- 三种归一化模式:全局(跨时间比较)、局部(单列归一化)、无归一化
- 双刻度支持:dB 模式(大动态范围)与线性模式(直接幅度对比)
- MATLAB 风格
parula_map色图,感知均匀性优于默认jet
显著优点
- 领域适配性强:内置 IMU、生理信号、振动分析、音频处理等场景示例
- 参数智能化:
get_specgram_params()根据时频分辨率需求自动反推窗口参数 - 交互友好:支持点击事件提取瞬时频谱,便于交互式故障诊断
- 学术规范:dB 计算自动处理 log(0) 异常,零填充支持高分辨率显示
潜在局限
- 必须显式注册投影,新手易遗漏步骤导致报错
- 归一化模式仅在线性刻度下生效,dB 模式不支持,存在功能耦合限制
- 依赖 Matplotlib 生态,对 Plotly 等交互式框架无原生支持
- 无实时流式处理能力,仅适合离线批处理分析
适合人群
信号处理工程师、生物医学研究者、机械振动分析师、语音处理开发者,尤其适合需要出版级图表质量的学术用户。
常规风险
- 参数误用:NFFT/noverlap 设置不当导致频率泄漏或时间分辨率不足
- 单位混淆:
freq_scale未正确设置时(如心率误用 Hz 而非 bpm),结果解读严重偏差 - 内存占用:长信号高分辨率分析可能产生大规格 2D 数组,需关注内存管理