pyqt动态生成折线图
时间: 2023-10-15 22:04:30 浏览: 191
以下是一个简单的示例,演示如何使用PyQt和Matplotlib动态生成折线图:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QVBoxLayout, QWidget
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import numpy as np
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个Matplotlib图形
self.figure = Figure(figsize=(5, 4), dpi=100)
self.canvas = FigureCanvas(self.figure)
# 添加一个垂直布局
widget = QWidget()
layout = QVBoxLayout(widget)
layout.addWidget(self.canvas)
# 设置主窗口的布局
self.setCentralWidget(widget)
# 初始化数据
self.xdata = []
self.ydata = []
# 创建一个定时器
self.timer = self.canvas.new_timer(interval=100)
self.timer.add_callback(self.update_plot)
# 启动定时器
self.timer.start()
def update_plot(self):
# 生成新数据
self.xdata.append(len(self.xdata))
self.ydata.append(np.random.randint(0, 10))
# 清除旧图形并绘制新图形
self.figure.clear()
ax = self.figure.add_subplot(111)
ax.plot(self.xdata, self.ydata)
# 设置图形属性
ax.set_xlim(0, max(10, len(self.xdata)))
ax.set_ylim(0, 10)
# 更新绘图区域
self.canvas.draw()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
该示例在主窗口中创建了一个Matplotlib图形,并使用定时器动态更新折线图数据。每隔100毫秒,图形会添加一个新数据点并更新绘图区域。您可以根据需要更改定时器间隔和数据生成逻辑。
阅读全文