PyQtGraph是基于PyQt5的图像控件库,能够高效快速地绘制实时图形,因此在数据可视化方面应用非常广泛。本文将介绍如何使用PyQtGraph绘制并更新实时数据的图形。
1. PyQtGraph的安装
在终端执行以下命令:
pip install PyQt5 PyQtGraph
2. 创建GUI界面及绘图区域
我们需要创建一个GUI界面,并添加一个PyQtGraph的绘图区域。
示例1:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout
import pyqtgraph as pg
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("PyQtGraph实践系列")
self.setGeometry(200, 200, 800, 600)
# 创建一个QWidget对象作为主窗口的中心区域,用于放置绘图控件
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
layout = QVBoxLayout(centralWidget)
# 创建一个PyQtGraph的绘图控件
self.plotWidget = pg.PlotWidget()
layout.addWidget(self.plotWidget)
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())
在上述代码中,我们首先创建了一个主窗口,然后在主窗口的中心区域添加了一个QWidget对象,并将其设置为主窗口的中心控件。接着我们在QWidget对象中添加了一个PyQtGraph的绘图控件,并将其添加到了MainWindows的布局中。这个窗口现在还没有实现数据的更新,接下来我们将添加数据源并更新绘图实现数据的实时更新。
3. 添加数据源并更新绘图
为了实现数据的实时更新,我们需要创建一个定时器,每隔一定的时间往PyQtGraph控件中添加一些数据,并更新绘图。示例2:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout
import pyqtgraph as pg
import numpy as np
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("PyQtGraph实践系列")
self.setGeometry(200, 200, 800, 600)
# 创建一个QWidget对象作为主窗口的中心区域,用于放置绘图控件
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
layout = QVBoxLayout(centralWidget)
# 创建一个PyQtGraph的绘图控件
self.plotWidget = pg.PlotWidget()
layout.addWidget(self.plotWidget)
# 创建定时器
self.timer = pg.QtCore.QTimer(self)
self.timer.timeout.connect(self.updateData)
self.timer.start(50) # 50ms更新一次
# 初始化x轴数据和曲线
self.time = 0
self.x = np.arange(0, 300)
self.y = np.zeros(300)
self.curve = self.plotWidget.plot(x=self.x, y=self.y)
def updateData(self):
# 每次更新添加10个数据
self.time += 1
self.y[:-10] = self.y[10:]
self.y[-10:] = np.random.randint(0, 100, 10)
# 更新曲线
self.curve.setData(self.x, self.y)
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())
在上述代码中,我们创建了一个定时器并设置定时器的间隔为50ms,每隔50ms就会执行一次updateData函数。在函数中,我们首先生成10个随机整数,然后将y数组中的数据整体往前移动10个位置,并将最后10个位置的数据设置为刚才生成的随机整数。通过setData函数将x、y数组的数据更新到绘图控件中。
总结
本文介绍了如何使用PyQtGraph绘制并更新实时数据的图形。我们通过创建GUI界面并添加一个PyQtGraph绘图控件,然后创建一个定时器,定时往绘图控件中添加数据并更新绘图。通过上述操作可以实现一种简单但常用的PyQtGraph实时绘图方案。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形 - Python技术站