Python实现支持双轴缩放的示波器式波形显示工具需求
适合搭建示波器风格界面的Python库
matplotlib.animation(无需额外安装)
你可能没注意到matplotlib本身就能实现示波器效果,用FuncAnimation可以实时更新波形,完全满足快速检查的需求。示例代码:import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import numpy as np fig, ax = plt.subplots() x_data = np.linspace(0, 10, 100) line, = ax.plot(x_data, np.zeros_like(x_data)) ax.set_ylim(-1, 1) def update(frame): # 模拟实时生成的波形数据 y_data = np.sin(x_data + frame/10) line.set_ydata(y_data) return line, ani = FuncAnimation(fig, update, interval=50, blit=True) plt.show()PyQtGraph
专为实时数据可视化设计,比matplotlib响应更快,API风格简洁,适合快速搭建示波器界面。安装后直接用:import pyqtgraph as pg from pyqtgraph.Qt import QtCore, QtGui import numpy as np app = QtGui.QApplication([]) win = pg.GraphicsLayoutWidget(show=True, title='示波器风格界面') plot = win.addPlot(title='实时波形') curve = plot.plot(pen='y') data = np.zeros(100) ptr = 0 def update(): global data, ptr data[ptr] = np.sin(ptr/10) # 模拟波形数据 ptr = (ptr + 1) % len(data) curve.setData(data) timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(50) QtGui.QApplication.instance().exec_()VisPy
基于OpenGL的高性能绘图库,适合处理高频更新的波形,用法也很直观:import vispy.plot as vp import numpy as np fig = vp.Fig() plot = fig[0,0] plot.title = '示波器波形' plot.ylim = (-1, 1) x = np.linspace(0, 10, 100) y = np.zeros_like(x) line = plot.plot((x, y), color='red') def update(event): global y y = np.roll(y, -1) y[-1] = np.sin(np.random.rand()*10) line.set_data(x, y) timer = fig.canvas.clock.schedule_interval(update, 0.05) fig.show(run=True)
内容的提问来源于stack exchange,提问作者Nikolai Savulkin
相关产品推荐
相关产品推荐

