Python+Matplotlib绘制动态爱心图
python+matplotlib绘制动态爱心图
·
函数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
更多推荐
已为社区贡献3条内容
所有评论(0)