zoukankan      html  css  js  c++  java
  • animation模块的使用

    1.动画的实现—初探

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation
    
    fig, ax = plt.subplots()
    xdata, ydata = [], []
    ln, = ax.plot([], [], 'r-', animated=False)
    
    def init():
        ax.set_xlim(0, 2*np.pi)
        ax.set_ylim(-1, 1)
        return ln,
    
    def update(frame):
        xdata.append(frame)
        ydata.append(np.sin(frame))
        ln.set_data(xdata, ydata)
        return ln,
    
    ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                        init_func=init, blit=True)
    plt.show()
    
    

    2.结合pyqt

    from PyQt5.QtWidgets import QPushButton,QWidget,QApplication,QGridLayout,QListWidget,QLineEdit
    
    import pyqtgraph as pg
    # pyqtgraph使用matplotlib
    import pyqtgraph.widgets.MatplotlibWidget as mw
    import sys
    import numpy as np
    
    # 用于中文乱码
    import matplotlib
    """ 绘图防止乱码 """
    # 指定默认字体 下面三条代码用来解决绘图中出现的乱码
    matplotlib.rcParams['font.sans-serif'] = ['SimHei']
    matplotlib.rcParams['font.family'] = 'sans-serif'
    # 解决负号'-'显示为方块的问题
    matplotlib.rcParams['axes.unicode_minus'] = False
    
    from matplotlib.animation import FuncAnimation
    
    class Example(QWidget):
        def __init__(self):
            super(Example, self).__init__()
            self.initUI()
    
    
        def initUI(self):
            self.setGeometry(50,50,800,620)
            self.setWindowTitle("animation动画—结合pyqt")
    
            model_plt = mw.MatplotlibWidget()
            # 隐藏matplotlib中的工具栏
            model_plt.toolbar.setVisible(False)
            self.fig = model_plt.getFigure()
            # 设置一个1*1面板
            self.ax = self.fig.add_subplot(111)
    
            self.xdata, self.ydata = [], []
            self.ln, = self.ax.plot([], [], 'r-', animated=False)
    
            ani = FuncAnimation(self.fig, self.update, frames=np.linspace(0, 2 * np.pi, 128),
                                init_func=self.init, blit=True)
    
    
    
            self.gridLayout = QGridLayout(self)
            ## 将部件添加到布局中的适当位置
            self.gridLayout.addWidget(model_plt, 0, 0)
    
        def init(self):
            self.ax.set_xlim(0, 2 * np.pi)
            self.ax.set_ylim(-1, 1)
            return self.ln,
    
        def update(self, frame):
            self.xdata.append(frame)
            self.ydata.append(np.sin(frame))
            self.ln.set_data(self.xdata, self.ydata)
            return self.ln,
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        ex = Example()
        ex.show()
        sys.exit(app.exec_())
    


  • 相关阅读:
    安装 pptpd 服务
    profile bashrc bash_profile 之间的区别和联系
    11款基于Javascript的文件管理器
    C/C++学习之static_cast和dynamic_cast、reinterpret_cast
    VS.Net中程序集的Debug版本和Release版本的区别
    .net4.0以下的CookieContainer存在一个bug.即主域和子域cookie互访有问题。
    学习C# delegate和C# event
    使用log4net记录日志到数据库(含有自定义属性)
    c#获取本机ip地址|获取本机的本地上网IP地址
    Java 跨语言实现方案
  • 原文地址:https://www.cnblogs.com/komean/p/11210083.html
Copyright © 2011-2022 走看看