zoukankan      html  css  js  c++  java
  • 『Python』matplotlib实现动画效果

    一般而言,在绘制复杂动画时,主要借助模块animation来完成

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    from matplotlib.animation import FuncAnimation
    
    # mpl.use("Qt5Agg")
    
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['font.serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
    
    fig, ax = plt.subplots(1, 1)
    
    x = np.linspace(0, 2 * np.pi, 5000)
    y = np.exp(-x) * np.cos(2 * np.pi * x)
    line, = ax.plot(x, y, color="cornflowerblue", lw=3)
    ax.set_ylim(-1.0, 1.0)
    
    
    # to clear current frame
    def init():
        line.set_ydata([np.nan] * len(x))
        return line,
    
    
    # to update the data
    def animate(data):
        line.set_ydata(np.exp(-x) * np.cos(2 * np.pi * x + float(data) / 100))
        return line,
    
    
    # to call class FuncAnimation which connects animate and init
    ani = FuncAnimation(fig, animate, init_func=init, frames=200, interval=2, blit=True)
    
    # to save the animation
    ani.save("movie.mp4", fps=20, writer="ffmpeg")
    
    plt.show()
    

    下面展示其中的4帧结果

    • line,中的逗号是不能省略的,不然就不是Line2D对象了

    • FuncAnimation的构造函数主要的参数有Figure对象、函数func、帧数frames,帧时间间隔interval

  • 相关阅读:
    JAVA基础集合(二)
    JAVA基础XML的解析
    JAVA基础集合(一)
    JAVA基础网络编程
    JAVA基础File类
    JAVA基础IO流(二)
    JAVA基础JDBC二(常用的开源工具)
    JAVA基础异常
    JAVA基础JDBC(一)
    JAVA基础反射
  • 原文地址:https://www.cnblogs.com/ice-coder/p/12908708.html
Copyright © 2011-2022 走看看