写用PySide2和Matplotlib实时显示曲线的陈旭
时间: 2023-12-04 08:26:02 浏览: 113
实时曲线显示
4星 · 用户满意度95%
好的,下面是一个使用 PySide2 和 Matplotlib 实时显示曲线的示例程序:
```python
import sys
import random
from PySide2.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from PySide2.QtCore import Qt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.animation import FuncAnimation
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建 Matplotlib 图形
self.figure = Figure()
self.canvas = FigureCanvas(self.figure)
self.ax = self.figure.add_subplot(111)
self.ax.set_xlim([0, 10])
self.ax.set_ylim([0, 100])
self.line, = self.ax.plot([], [])
# 创建 PySide2 布局和窗口
central_widget = QWidget()
self.setCentralWidget(central_widget)
layout = QVBoxLayout(central_widget)
layout.addWidget(self.canvas)
# 开始动画
self.animation = FuncAnimation(self.figure, self.update_plot, interval=1000)
def update_plot(self, frame):
# 生成随机数据
data = [random.randint(0, 100) for _ in range(10)]
# 更新 Matplotlib 图形
x = range(10)
y = data
self.line.set_data(x, y)
self.ax.set_xlim([0, 10])
self.ax.set_ylim([0, 100])
# 更新 PySide2 窗口
self.canvas.draw()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个程序创建了一个带有 Matplotlib 图形的 PySide2 窗口。在程序中,我们使用 FigureCanvas 类来将 Matplotlib 图形嵌入到 PySide2 窗口中。然后,我们创建了一个实时动态更新的 Matplotlib 曲线,通过 FuncAnimation 类来实现。在 update_plot 方法中,我们生成随机数据并更新 Matplotlib 图形,然后使用 FigureCanvas 的 draw 方法来更新 PySide2 窗口。最后,我们调用 QApplication 的 exec_ 方法来进入事件循环,等待用户操作。当用户关闭窗口时,程序退出。
阅读全文