📅  最后修改于: 2023-12-03 15:06:50.109000             🧑  作者: Mango
PyQtGraph是一款基于Qt框架的高性能2D数据可视化库。它的主要特点是支持实时数据,并使用GPU进行硬件加速,因此非常适合用于科学计算和工业控制领域。在这里,我们将介绍如何使用PyQtGraph绘制带有时间戳的数据。
首先,我们需要安装PyQtGraph。可以使用pip命令进行安装:
pip install pyqtgraph
下面是一个简单的PyQtGraph应用程序的示例代码:
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
# 创建应用程序
app = QtGui.QApplication([])
# 创建主窗口
win = pg.GraphicsWindow(title="PyQtGraph")
win.resize(800, 600)
# 添加绘图区域
plot = win.addPlot(title="实时数据")
# 显示窗口
win.show()
# 启动事件循环
QtGui.QApplication.instance().exec_()
该例子创建了一个PyQtGraph应用程序,主窗口中包含一个“实时数据”的绘图区域。启动应用程序后,可以看到一个空白的窗口。
接下来,我们将使用PyQtGraph绘制一些带有时间戳的数据。以下是示例代码:
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import numpy as np
import time
# 创建应用程序
app = QtGui.QApplication([])
# 创建主窗口
win = pg.GraphicsWindow(title="PyQtGraph")
win.resize(800, 600)
# 添加绘图区域
plot = win.addPlot(title="实时数据")
# 创建数据曲线
curve = plot.plot()
# 设置x轴为时间戳形式
plot.setLabel('bottom', 'Time', units='s')
# 启动事件循环
QtGui.QApplication.instance().exec_()
# 初始化数据
data = np.zeros((100, 2))
ptr = 0
lastTime = time.time()
# 实时更新数据
while True:
# 更新数据
now = time.time()
dt = now - lastTime
lastTime = now
data[ptr, 0] = now
data[ptr, 1] = np.random.normal()
ptr = (ptr + 1) % data.shape[0]
# 绘制数据
curve.setData(data=data[:, 0], y=data[:, 1])
# 更新x轴范围
plot.setXRange(now - 10, now)
# 休眠一段时间
time.sleep(0.05)
该例子创建了一个实时更新数据的应用程序。首先,创建了一个大小为100 x 2的数组data,并初始化为0。然后,使用while循环不断更新数据并绘制曲线。更新数据的过程如下:
绘制曲线的过程如下:
启动应用程序后,可以看到实时更新的曲线,横轴为时间轴,纵轴为随机数轴。随着时间推移,曲线不断更新,而横轴范围为最近10秒的时间范围。
本文介绍了如何使用PyQtGraph绘制带有时间戳的数据。我们首先将PyQtGraph库安装至环境中,然后创建一个PyQtGraph应用程序。接着,我们使用numpy生成一些带有时间戳的随机数据,并使用PyQtGraph的plot函数将其显示在一个实时更新的曲线上。如果需要绘制其他类型的数据,只需修改数据生成的方式和绘图函数即可。