Python实现实时动态曲线
本文最后更新于:1 年前
1, 效果展示
2, 主要使用了三个包
import pyqtgraph as pg
import numpy as np
import array
3, 注意事项
- 因为 pyqtgraph 需要 PyQt5/6 的支持, 但是Pycharm 安装老是失败。所以我推荐先在 \python环境根目录\Lib\site-packages\下,手动安装PyQt5
4, 源码
import pyqtgraph as pg
import numpy as np
import array
app = pg.mkQApp() # 创建应用程序实例app
data = array.array('d') # 可动态改变数组的大小,double型数组
N = 200 # 一个屏幕显示的数据点数
win = pg.GraphicsWindow() # 创建一个图形显示窗口win,设置窗口属性,如窗口标题、窗口大小
# win.setwindowTitle(u'pyqtgraph逐点画波形图')
win.resize(500, 300)
p = win.addPlot() # 在win上添加一个画图对象p,设置各种属性,如网格,X、Y轴范围、X、Y轴label及图形标题
p.showGrid(x=True, y=True)
p.setRange(xRange=[0, N - 1], yRange=[-1.2, 1.2], padding=0)
p.setLabels(left='y / V', bottom='x / point', title='y = sin(x)')
curve = p.plot(pen='y') # 在p上创建1条黄色曲线curve,idx为产生正弦波形数据的变量
idx = 0
# 定时器超时函数plotData,内部不断产生一个正弦数据点tmp,
# 当数据点数小于N时,data数组使用append动态添加tmp,
# 否则,将tmp设为data的最后一个元素,前N-1个元素为上次数组中的最后N-1个数。
# 使用setData函数更新curve的数据并刷新绘图
def plotData():
global idx
tmp = np.cos(np.pi / 50 * idx)
if len(data) < N:
data.append(tmp)
else:
data[:-1] = data[1:]
data[-1] = tmp
curve.setData(data)
idx += 1
# 定义一个定时器timer,并连接超时函数plotData,每隔30ms刷新一次波形
timer = pg.QtCore.QTimer()
timer.timeout.connect(plotData)
timer.start(30)
# 使用app.exec_()函数运行实例,进入消息循环
app.exec_()
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!