函数FuncAnimation(fig,func,frames,init_func,interval,blit)是绘制动图的主要函数,其参数如下:

  a.fig 绘制动图的画布名称

  b.func自定义动画函数,即下边程序定义的函数update

  c.frames动画长度,一次循环包含的帧数

  d.init_func自定义开始帧,即传入刚定义的函数init,初始化函数

  e.interval更新频率,以ms计

  f.blit选择更新所有点,还是仅更新产生变化的点。应选择True,但mac用户请选择False,否则无法显

代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
%matplotlib notebook
fig, ax = plt.subplots(dpi=72, figsize=(8,6))
alpha = 1 # 绘图函数参数

x = np.arange(-2,2,0.01) # 自变量取值范围
y = np.power(x**2,float(1/3)) + np.power(0.9*(3.3 - x**2),0.5)*np.sin(alpha*np.pi*x) # 函数表达式
line,  = ax.plot(x, y)

def update():
    global alpha
    alpha +=0.02    
def animate():
    update()
    y = np.power(x**2,float(1/3)) + np.power(0.9*(3.3 - x**2),0.5)*np.sin(alpha*np.pi*x)
    plt.cla() # 清除之前绘制的图像
    plt.rcParams["font.family"] = "FangSong"  # 支持中文显示
    plt.rcParams['axes.unicode_minus'] = False
    plt.ylim(-2, 3)  # Y轴取值范围
    plt.text(-1.5,3.2,r'$ f(x) = {x^{2/3}}$'+' + '+r'$(0.9(3.3-x^{2}))^{1/2} \sin(\alpha\pi x)$',size=20) # 函数表达式
    plt.text(-0.5, 3, r'$\alpha=$'+f'{alpha}',size=15) # 当前alpha值
    line,  = ax.plot(x, y) # 重新绘制
    return line

animation = animation.FuncAnimation(fig=fig,func=animate,
                                       frames=2, 
                                       init_func=animate,
                                       interval=1,
                                       blit=False)
# animation.save('sinx.gif', writer='imagemagick') # 保存动图
plt.show()

动态图某一帧:

 讲解视频:

【python+matplotlib绘制动态爱心图】 https://www.bilibili.com/video/BV1Tm4y1w7bn?share_source=copy_web&vd_source=d5936d3772cd8dd5f8843c76d3b9bae1

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐