有一个不断生成的数据,随着时间将该这个数据用pyqtgragh绘制UI界面,并让横坐标轴跟着更新移动
时间: 2023-11-22 21:52:38 浏览: 113
使用qpainter 画坐标轴 实现 qchart功能 支持数据拖动 坐标轴反转
可以参考以下代码实现:
```python
import pyqtgraph as pg
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class GraphWidget(pg.GraphicsLayoutWidget):
def __init__(self, parent=None):
super().__init__(parent)
# 创建一个 PlotWidget 对象
self.plot = self.addPlot()
# 设置横坐标轴的范围
self.plot.setXRange(0, 100)
# 创建一个可更新的曲线对象
self.curve = self.plot.plot(pen='g')
# 创建定时器对象,用于定时更新曲线数据
self.timer = QTimer()
self.timer.timeout.connect(self.update_plot)
self.timer.start(50) # 设置定时器周期为 50 毫秒
# 初始化数据
self.data = [0] * 100
self.ptr = 0
def update_plot(self):
# 更新数据
self.data[self.ptr] = self.data[self.ptr - 1] + 0.2 * (0.5 - random())
self.ptr += 1
if self.ptr >= len(self.data):
self.ptr = 0
# 更新横坐标轴
self.plot.setXRange(self.ptr - 100, self.ptr)
# 更新曲线数据
self.curve.setData(self.data[self.ptr - 100:self.ptr])
if __name__ == '__main__':
app = QApplication([])
widget = GraphWidget()
widget.show()
app.exec_()
```
这个代码创建了一个继承自 `pg.GraphicsLayoutWidget` 的 `GraphWidget` 类,该类实现了一个动态绘制曲线的 UI 界面。在 `GraphWidget` 的初始化函数中,我们创建了一个 `PlotWidget` 对象 `plot`,并将其添加到布局中;设置横坐标轴的范围为 0 到 100;创建一个可更新的曲线对象 `curve`;创建定时器对象 `timer` 并启动;初始化数据 `data` 和指针 `ptr`。
定时器的周期为 50 毫秒,每次定时器超时时,会调用 `GraphWidget` 的 `update_plot()` 函数来更新曲线数据和横坐标轴的范围。在 `update_plot()` 函数中,我们先更新数据,然后更新横坐标轴的范围为当前指针位置减去 100 到当前指针位置,最后更新曲线数据。
你可以根据自己的需要修改代码中的参数,比如定时器周期、数据更新方式等。
阅读全文