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

如何修改PyQtGraph绘制音频信号时的X轴刻度标签?

PyQtGraph替换X轴自定义刻度标签的方法

要给PyQtGraph的X轴设置自定义刻度标签,直接按以下三步操作即可:

  • 获取目标轴对象
    调用PlotWidget的getAxis()方法获取X轴(默认底部轴,参数传'bottom'):

    x_axis = self.graphWidget.getAxis('bottom')
    
  • 定义刻度位置与对应标签
    把你想要的刻度位置和对应标签配对,比如要在采样点0、44100、88200处显示"0秒"、"1秒"、"2秒",就打包成指定格式的列表:

    # 刻度位置列表,对应信号的索引
    tick_pos = [0, 44100, 88200]
    # 对应位置的自定义标签
    tick_labels = ["0秒", "1秒", "2秒"]
    # 组合成setTicks要求的格式:外层列表包含一组或多组刻度(支持主次刻度区分)
    custom_ticks = [list(zip(tick_pos, tick_labels))]
    
  • 应用自定义刻度
    调用轴对象的setTicks()方法,传入定义好的刻度数据:

    x_axis.setTicks(custom_ticks)
    

完整示例代码

结合你的现有代码,完整实现如下(用模拟音频信号演示):

import pyqtgraph as pg
from PyQt5.QtWidgets import QMainWindow, QApplication
import sys
import numpy as np

class AudioPlotWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 创建绘图组件
        self.graphWidget = pg.PlotWidget()
        self.setCentralWidget(self.graphWidget)
        
        # 生成模拟音频信号:440Hz正弦波,采样率44100,时长3秒
        fs = 44100
        duration = 3
        self.signal = np.sin(2 * np.pi * 440 * np.linspace(0, duration, fs*duration))
        
        # 绘制信号
        self.curve = self.graphWidget.plot(self.signal)
        
        # 设置自定义X轴刻度
        x_axis = self.graphWidget.getAxis('bottom')
        tick_pos = [0, fs, 2*fs]
        tick_labels = ["0秒", "1秒", "2秒"]
        custom_ticks = [list(zip(tick_pos, tick_labels))]
        x_axis.setTicks(custom_ticks)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = AudioPlotWindow()
    window.show()
    sys.exit(app.exec_())

如果需要更灵活的刻度(比如根据信号长度自动生成标签、用非时间类文字标签),只需要修改tick_pos和tick_labels的内容即可。

内容的提问来源于stack exchange,提问作者Mariali Guzmán Adán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:10:24