首页 > 其他 > 详细

animation模块的使用

时间:2019-07-18 21:43:16      阅读:54      评论:0      收藏:0      [点我收藏+]

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_())

技术分享图片
技术分享图片

animation模块的使用

原文:https://www.cnblogs.com/komean/p/11210083.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!