使用animation绘制动图

在Python中,Animation模块是一个用于创建简单的动画的工具。它可以通过不断地更新图形对象的位置来模拟运动的效果。 它的主要功能是通过定义一个或多个函数来生成动画帧,并将它们按顺序显示出来。这些函数通常包含一些参数,这些参数可以随着时间的推移而改变,从而导致图像的变化。

FuncAnimation 函数的基本语法: FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, repeat=False, blit=True, cache_frame_data=True)

参数说明:

fig : Matplotlib 的 figure 实例。

func : 动画每一帧调用的函数。这个函数通常会更新 figure 中的图形元素以显示新的数据。

frames : None 或者数组或迭代器,动画应该持续的帧数。 init_func : 选择性地,在第一次绘制之前运行的初始化函数。 fargs : 传递给 func 和 init_func 的附加位置参数列表。

save_count : 可选的整数,指定要保存的最大数量的艺术家对象到缓存中。

repeat : bool,如果为 True,则动画无限循环。默认为Flase

 cache_frame_data : 如果为 True(默认),则每次调用 func 时都会缓存 frame 参数的数据,以防止在每个帧中多次计算相同的值。

实例代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
 
# 0. 设置中文黑体
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
 
# 1. 准备正弦曲线数据
x = np.linspace(-1, 2 * np.pi, 100)
y = np.sin(x)
 
# 2. 创建画布和坐标系
# fig, ax = plt.subplots()
fig = plt.figure(tight_layout=True)
ax = fig.add_subplot(111)
 
 
point, = plt.plot([], [], 'ro', animated=True)
x_list, y_list = [], []
 
 
 
 
# 3. 绘制正弦曲线
ax.plot(x, y)
 
 
# 4. 动画设计
 
def init():
    ax.set_xlim(0, 6)           # 设置x轴的范围
    ax.set_ylim(-1, 1)           # 设置y轴的范围
    return  point                # 返回需要更新的对象
 
 
def update(frame):
    x_list.append(frame)         # 将新的帧数添加到x_list列表中
    y_list.append(np.sin(frame))   # 将新的帧数添加到y_list列表中
   
    point.set_data([frame], [np.sin(frame)])       # 更新圆点的数据
 
    text = ax.text(.80, .80, f'x={frame:.3f},    # 创建一个新的文本对象,显示当前帧数和y值
     y={np.sin(frame):.3f}',
     transform=ax.transAxes)
 
 
    return  point,text
 
 
 
 
 
 
 
# 创建动画
ani = animation.FuncAnimation(fig, update,
                              frames=np.linspace(0, 6),
                              interval=50,
                              repeat=False,
                              init_func=init, blit=True)  # 使用blit模式提高性能
 
#################################################
 
 
# 5.将动画保存为gif图片(用于上传博客)
#ani.save("pratice7.3.gif", writer='pillow')
 
# 6.展示图表
plt.show()

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值