示例详解pyqtgraph绘制实时更新数据的图
作者:mj412828668
PyQtGraph是一个基于PyQt和NumPy的Python库,它专为实时数据可视化而设计,本文通过实例代码给大家介绍pyqtgraph绘制实时更新数据的图,感兴趣的朋友一起看看吧
PyQtGraph是一个基于PyQt和NumPy的Python库,它专为实时数据可视化而设计。以绘制0~2π范围的y=sin(x)为例,基本用法的代码如下:
# coding=utf-8 import pyqtgraph as pg from pyqtgraph.Qt import QtGui, QtCore import numpy as np # pyqtgraph中的颜色表示,blue:b,green:g,red:r,cyan:c,magenta:m,yellow:y,black:k,white:w # pyqtgraph中的颜色表示也可用十六进制,如白色'#FFFFFF' # 字体大小的单位有px(pixel,像素)和pt(point,点),px适用于屏幕显示,其大小是动态的,而pt适用于印刷,大小是固定的。 def update(): global x, y y = np.roll(y, -1) # 滚动数组,模拟数据更新 curve.setData(x, y) # 更新曲线数据 def mouseover(pos): global win act_pos = curve.mapFromScene(pos) if type(act_pos) != QtCore.QPointF: return # print(act_pos.x(), act_pos.y()) win.setWindowTitle("(x = {:.4f}, y = {:.4f})".format(act_pos.x(), act_pos.y())) if __name__ == '__main__': # 创建应用 app = QtGui.QApplication([]) # 设置窗口界面属性 win = pg.GraphicsLayoutWidget(show=True, title="实时数据更新示例") # 设置程序界面的标题 win.resize(800, 600) # 设置程序界面的窗口大小 # win.setBackground("b") # 设置背景颜色为蓝色。默认背景是黑色,background='default' # 添加绘图区域 plot = win.addPlot(title="实时更新的正弦波形") # 设置绘图的标题 plot.showGrid(x=True, y=True) # x轴和y轴都显示网格 x_styles = {'color': 'r', 'font-size': '30px', 'units': 'radian'} # 设置标签文字、颜色、字体大小、单位 y_styles = {'color': 'r', 'font-size': '30px'} # 设置标签文字、颜色、字体大小 plot.setLabel('left', 'y=sin(x)', **y_styles) # 左边坐标轴,Y轴 plot.setLabel('bottom', 'x', **x_styles) # 下边坐标轴,X轴 plot.getAxis('left').setPen('#0000FF') # 坐标轴上色 plot.getAxis('bottom').setPen('#0000FF') # 坐标轴上色 plot.setXRange(min=0, max=7) # 设置X轴刻度范围 plot.setYRange(min=-1.2, max=1.2) # 设置Y轴刻度范围 plot.setMouseEnabled(x=False, y=False) # 设置禁用鼠标交互,默认是启用的 curve = plot.plot(pen="y") # 创建一条黄色的线 # 数据初始化 x = np.linspace(0, 2 * np.pi, 500) y = np.sin(x) # 绑定鼠标移动的信号和槽, 移动鼠标时就在窗口标题上显示当前鼠标停留位置的坐标 curve.scene().sigMouseMoved.connect(mouseover) # 设置定时器,每20毫秒更新一次,相当于FPS=50 timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(20) # 每20毫秒更新一次 # 开始事件循环 QtGui.QApplication.instance().exec_()
运行效果截图如下:
到此这篇关于pyqtgraph绘制实时更新数据的图的文章就介绍到这了,更多相关pyqtgraph实时更新内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!