博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt5嵌入matplotlib动画
阅读量:5947 次
发布时间:2019-06-19

本文共 2312 字,大约阅读时间需要 7 分钟。

1 # -*- coding: utf-8 -*- 2  3 import sys 4 from PyQt5 import QtWidgets 5  6 import numpy as np 7 from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas 8 from matplotlib.figure import Figure 9 from matplotlib.animation import FuncAnimation10 11 class MyMplCanvas(FigureCanvas):12     """Ultimately, this is a QWidget (as well as a FigureCanvasAgg, etc.)."""13     def __init__(self, parent=None, width=5, height=4, dpi=100):14         fig = Figure(figsize=(width, height), dpi=dpi)15         self.axes = fig.add_subplot(111)16         # We want the axes cleared every time plot() is called17         self.axes.hold(False)18 19         self.compute_initial_figure()20 21         #22         FigureCanvas.__init__(self, fig)23         self.setParent(parent)24 25     def compute_initial_figure(self):26         pass27 28 class AnimationWidget(QtWidgets.QWidget):29     def __init__(self):30         QtWidgets.QWidget.__init__(self)31 32         vbox = QtWidgets.QVBoxLayout()33         self.canvas = MyMplCanvas(self, width=5, height=4, dpi=100)34         vbox.addWidget(self.canvas)35         36         hbox = QtWidgets.QHBoxLayout()37         self.start_button = QtWidgets.QPushButton("start", self)38         self.stop_button = QtWidgets.QPushButton("stop", self)39         self.start_button.clicked.connect(self.on_start)40         self.stop_button.clicked.connect(self.on_stop)41         hbox.addWidget(self.start_button)42         hbox.addWidget(self.stop_button)43         vbox.addLayout(hbox)44         self.setLayout(vbox)45         46         self.x = np.linspace(0, 5*np.pi, 400)47         self.p = 0.048         self.y = np.sin(self.x + self.p)49         self.line, = self.canvas.axes.plot(self.x, self.y, animated=True, lw=2)50         51     def update_line(self, i):52         self.p += 0.153         y = np.sin(self.x + self.p)54         self.line.set_ydata(y)55         return [self.line]56         57     def on_start(self):58         self.ani = FuncAnimation(self.canvas.figure, self.update_line, 59                                  blit=True, interval=25)60     61     def on_stop(self):62         self.ani._stop()63 64 if __name__ == "__main__":65     qApp = QtWidgets.QApplication(sys.argv)66     aw = AnimationWidget()67     aw.show()68     sys.exit(qApp.exec_())

 

转载地址:http://eudxx.baihongyu.com/

你可能感兴趣的文章
svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
查看>>
JavaScript 编码规范(中文/Airbnb公司版)
查看>>
DNX/ASP.NET 5的xUnit入门向导
查看>>
正则表达式—匹配连续重复的字符
查看>>
如何在一个月内改善你的生活
查看>>
beyond compare比较工具设置
查看>>
Java中的事务
查看>>
Spring Ajax一个简单样例
查看>>
传递给数据库 'master' 中的日志扫描操作的日志扫描号无效
查看>>
导入https证书
查看>>
SAP R3和JAVA交换数据之JCO
查看>>
近期给朋友推荐的笔记本型号
查看>>
sqlserver使用存储过程发送http请求
查看>>
oracle 相关操作
查看>>
JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)
查看>>
activeMQ安全配置及常见问题解决
查看>>
实作 ASP.NET 多笔数据离线编辑(转)
查看>>
solr的用分布式搜索(转)
查看>>
多媒体开发之rtmp---rtmp client 编译
查看>>
异常处理汇总 ~ 修正果带着你的Code飞奔吧!
查看>>