当前位置: 首页 > news >正文

建网站找我产品软文范例软文

建网站找我,产品软文范例软文,龙海网络推广,wordpress调用指定文章图片路径Python库matplotlib之六 动画FuncAnimation构造器成员函数应用例子 动画 Matplotlib基于其绘图功能,还提供了一个使用动画模块,生成动画的接口。动画是一系列帧,其中每个帧对应于图形上的一个图。 Matplotlib使用两个类来实现动画&#xff…

Python库matplotlib之六

  • 动画
    • FuncAnimation
      • 构造器
      • 成员函数
      • 应用例子

动画

Matplotlib基于其绘图功能,还提供了一个使用动画模块,生成动画的接口。动画是一系列帧,其中每个帧对应于图形上的一个图。

Matplotlib使用两个类来实现动画, 它们分别是

  • FuncAnimation:生成第一帧的数据,然后修改每一帧的数据以创建动画图。这个类在速度和内存方面更加高效,因为它绘制一次artist,然后对其进行修改
  • ArtistAnimation:生成将在动画中的每个帧中进行绘制的artist列表(可迭代)。这个类很灵活,因为它允许任何可迭代的artist按序列进行动画处理。

FuncAnimation

构造器

词法:matplotlib.animation.FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)

FuncAnimation是TimedAnimation的子类,它通过重复调用函数func来制作动画。

参数说明

  • fig,该参数类型是Figure
    fig是一个Figure对象,用于获取所需事件,例如绘制或调整大小。

  • func,该参数类型是callable
    func参数是一个函数,每一帧都需要调用该函数。该函数的第一个参数将是frames参数的下一个值。任何其他位置参数,都可以使用 functools.partial 或通过 fargs 参数提供。

    def func(frame, *fargs) -> iterable_of_artists
    

    使用 functools.partial 提供参数通常更方便。通过这种方式,也可以传递关键字参数。要传递具有位置参数和关键字参数的函数,将所有参数设置为关键字参数,只需保留frame参数未设置:

    blit == True,则 func 必须返回所有已修改或创建的artists的可迭代对象。blitting算法使用此信息来确定必须更新图形的哪些部分。
    blit == False,则返回值不被使用,并且在这种情况下可以被省略。

  • frames,该参数类型是iterable, int, generator函数, 或None, 是可选的
    frames是传递给函数func的数据源,动画每一帧数据
    如果frames是iterable,则只需使用提供的值即可。如果 iterable 有长度,它将盖写save_count kwarg。
    如果frames是整数,则相当于传递range(frames)
    如果frames是生成器函数,则必须具有下列形式:

    def gen_function() -> obj
    

    如果frames是None,则相当于传递 itertools.count。
    在所有参数类型情况下,frames中的值只是简单地传递给用户提供的函数,因此可以是任何类型。

  • init_func,该参数类型是callable, 是可选的
    init_func是用于绘制清晰框架的函数。如果未给出,则将使用帧序列中第一项的绘制结果。该函数将在第一帧之前调用一次。该函数具有下列形式

    def init_func() -> iterable_of_artists
    

    blit == True,则 init_func 必须返回要重新绘制的artists的可迭代对象。blitting算法使用此信息来确定必须更新图形的哪些部分。
    blit == False,则返回值不被使用,并且在这种情况下可以被省略。

  • fargs,该参数类型是tuple,或None, 是可选的
    参数fargs是每次调用 func 的附加参数。使用functools.partial更好。

  • save_count,该参数类型是int, 是可选的
    从frames到缓存的值的数量。仅当无法从frames推断出帧数量时,才使用此方法,即当它是没有长度的迭代器或生成器时。

  • interval,该参数类型是int, 默认值为200
    帧之间以毫秒为单位的延迟。

  • repeat_delay,该参数类型是int, 默认值为0
    如果参数repeat为 True,则该参数是连续动画运行之间以毫秒为单位的延迟。

  • repeat,该参数类型是bool, 默认值为True
    该参数确定,当帧序列完成时,是否重复动画。

  • blit,该参数类型是bool, 默认值为False
    blit确定是否使用位块传输来优化绘图。使用 blitting 时,任何动画artists都将根据其 zorder 进行绘制;然而,无论他们的zorder如何,他们都会被绘制在任何以前的artists之上。

  • cache_frame_data,该参数类型是bool, 默认值为True
    cache_frame_data确定是否缓存帧数据。当帧包含大型对象时,禁用缓存可能会有所帮助。

成员函数

成员函数说明
_init_ (fig, func[, frames, init_func, …])
new_frame_seq()返回新的帧信息序列。
new_saved_frame_seq()返回已保存/缓存的帧信息的新序列。
pause()暂停动画。
resume()恢复动画。
save(filename[, writer, fps, dpi, codec, …])通过绘制每一帧,将动画保存为电影文件。
to_html5_video([embed_limit])将动画转换为 HTML5 <video> 标记。
to_jshtml([fps, embed_frames, default_mode])生成动画的 HTML 表示形式。

应用例子

这个例子是一个抛物线演示动画,通过不断调用函数update,演示不同的帧。

import matplotlib.pyplot  as plt
import matplotlib.animation as animation
import numpy as npdef update(frame):global t, z, scat, line2if frame < 39:print("frame: {0}".format(frame), end=",")else:print("frame: {0}".format(frame))# for each frame, update the data stored on each artist.x = t[:frame]y = z[:frame]# update the scatter plot:data = np.stack([x, y]).Tscat.set_offsets(data)# update the line plot:line2.set_xdata(t[:frame])line2.set_ydata(z2[:frame])return (scat, line2)if __name__ == "__main__":global t, z, scat, line2fig, ax = plt.subplots()t = np.linspace(0, 3, 40)g = -9.81v0 = 12z = g * t**2 / 2 + v0 * tv02 = 5z2 = g * t**2 / 2 + v02 * tscat = ax.scatter(t[0], z[0], c="r", s=5, label=f'v0 = {v0} m/s')line2 = ax.plot(t[0], z2[0], label=f'v0 = {v02} m/s')[0]ax.set(xlim=[0, 3], ylim=[-4, 8], xlabel='Time [s]', ylabel='Z [m]')ax.legend()ani = animation.FuncAnimation(fig=fig, func=update, frames=40, interval=30, repeat=False)plt.show()

上述程序运行产生的屏幕输出

C:\>python animation_1.py
frame: 0,frame: 0,frame: 1,frame: 2,frame: 3,frame: 4,frame: 5,frame: 6,frame: 7,frame: 8,frame: 9,frame: 10,frame: 11,frame: 12,frame: 13,frame: 14,frame: 15,frame: 16,frame: 17,frame: 18,frame: 19,frame: 20,frame: 21,frame: 22,frame: 23,frame: 24,frame: 25,frame: 26,frame: 27,frame: 28,frame: 29,frame: 30,frame: 31,frame: 32,frame: 33,frame: 34,frame: 35,frame: 36,frame: 37,frame: 38,frame: 39

在这里插入图片描述

http://www.zhongyajixie.com/news/38908.html

相关文章:

  • 德阳响应式网站建设如何推广网站链接
  • 民治做网站多少钱网络营销案例题
  • magento网站建设重庆关键词seo排名
  • iis7建设网站学校seo推广培训班
  • 天津建设工程网站站内推广的方法和工具
  • 舆情分析是什么工作搜索引擎优化seo多少钱
  • 专业网站建设技术产品策划方案怎么做
  • 做游戏破解版的网站爱站网注册人查询
  • 最好的免费logo设计网站网站统计数据
  • 网站设计主要内容农产品网络营销策划书
  • 网站未备案或已封禁如何在百度发布信息
  • 专门做衬衣网站三生网络营销靠谱吗
  • 网站底部放什么百度关键词工具入口
  • 西安做网站哪家最便宜广州网站排名专业乐云seo
  • 淘宝网站的订单管理怎么做做百度推广的业务员电话
  • 全国最新实时大数据百度搜索引擎seo
  • 做兼职网站哪个靠谱吗兰州seo新站优化招商
  • 做网站的经验和体会网站统计
  • 物业网站开发sem推广是什么意思呢
  • 宝安区是深圳最差的区seo推广专员工作内容
  • 中国工程机械网官网沈阳网站优化
  • 连城县住房和城乡建设局 网站cilimao磁力猫搜索引擎
  • 微网站定制开发网页制作成品
  • 网络建设的流程网站百度搜索app免费下载
  • 个人如何做购物网站 关于支付接口seo自学教程
  • 上传网站图片处理网络seo首页
  • 做一下网站博彩互联网营销怎么做
  • iis部署网站项目旅游企业seo官网分析报告
  • 企业网站 流程专业营销团队外包公司
  • 广州建站快车网页设计软件有哪些