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

Python库matplotlib之六

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

在这里插入图片描述

相关文章:

Python库matplotlib之六

Python库matplotlib之六 动画FuncAnimation构造器成员函数应用例子 动画 Matplotlib基于其绘图功能&#xff0c;还提供了一个使用动画模块&#xff0c;生成动画的接口。动画是一系列帧&#xff0c;其中每个帧对应于图形上的一个图。 Matplotlib使用两个类来实现动画&#xff…...

十一、数据库的设计规范

文章目录 1. 为什么需要数据库设计2. 范式2.1 范式介绍2.2 范式都包括哪些2.3 键和相关属性的概念2.4 第一范式(1st NF)2.5 第二范式(2nd NF)2.6 第三范式(3rd NF)2.7 小结3. 反范式化3.1 概述3.2 应用举例3.3 反范式的新问题3.4 反范式的使用场景3.4.1 增加冗余字段的建议3.…...

这届物理与化学诺奖对S2AIAI4S的启示

物理学与AI看似神秘而又简洁的纠缠 随着今年诺贝尔物理学奖&#xff08;这篇还没来得及发&#xff0c;化学奖也...&#xff09;的颁布&#xff0c;不管是国内某圈还是国外某管&#xff0c;无论是学术界又或产业界&#xff0c;充斥着震惊又或是“物理学不存在了”之类的调侃&am…...

压力测试指南-云环境中的压力测试实践

云环境中的压力测试实践 1. 云环境对压力测试的影响​ 在数字化转型的浪潮中&#xff0c;云环境已成为软件部署与测试的首选。它不仅提供了无限的可扩展性&#xff0c;还极大地改变了我们进行压力测试的方式。传统本地环境中&#xff0c;硬件资源的限制常导致无法模拟真实世界…...

基于多密钥同态加密的安全高效的联邦学习

文章目录 摘要与简介部分1、联邦学习 FL2、同态加密 HE3、文章创新点 一、简介1、基于 HE 的 FLs2、离线问题3、计算开销4、该文章的工作5、文章的贡献点 二、背景和相关研究1、基于多方安全计算 (SMC) 的联邦学习 (FL)2、基于差分隐私 (DP) 的联邦学习 (FL)3、基于可信执行环境…...

R语言统计分析——气泡图

参考资料&#xff1a;R语言实战【第2版】 气泡图&#xff08;bubble plot&#xff09;用来展示三个定量变量间的关系&#xff1a;先创建一个二维散点图&#xff0c;然后用点的大小来代表第三个边变量的值。 我们可以使用symbols()函数来创建气泡图。该函数可以在指定的(x,y)坐标…...

实用篇—Navicat复制多条INSERT语句,去除ID列执行

在数据库管理中&#xff0c;常常需要将数据从一个表复制到另一个表。使用 Navicat 等工具可以方便地导出多条 INSERT 语句&#xff0c;但有时我们不需要某些列&#xff08;如 ID 列&#xff09;。本文将介绍如何在 Navicat 中复制多条 INSERT 语句&#xff0c;并去除 ID 列以便…...

pytorch中张量的有关操作

pytorch中张量的有关操作 创建张量torch.tensor(data): 从数据创建张量torch.zeros(size): 创建元素全为0的张量torch.ones(size): 创建元素全为1的张量torch.empty(size): 创建未初始化的张量torch.randn(size): 创建服从标准正态分布的张量torch.arange(start, end, step): 创…...

Windows多线程编程 互斥量和临界区使用

Windows 多线程编程允许程序同时运行多个线程&#xff0c;提高程序的并发性和执行效率。多线程编程中的核心概念包括线程的创建、同步、调度、数据共享和竞争条件等。本文详细介绍了 Windows 多线程编程的关键技术点&#xff0c;并解释如何使用线程同步机制来保证线程安全。 1…...

Java中集合类型的转换

在Java编程中&#xff0c;集合框架&#xff08;Collections Framework&#xff09;提供了一套用于存储和处理对象集合的接口和类。由于集合框架的灵活性和强大功能&#xff0c;我们经常需要在不同的集合类型之间进行转换。本文将介绍Java中常见的集合类型转换方法&#xff0c;包…...

汽车售后TPMS浅谈

汽车售后中的TPMS&#xff0c;即轮胎压力监测系统&#xff08;Tire Pressure Monitoring System&#xff09;&#xff0c;是一种重要的汽车安全系统。以下是对汽车售后TPMS的详细解释&#xff1a; 一、TPMS的作用 TPMS的主要作用是在汽车行驶过程中对轮胎气压进行实时自动监测…...

LUCEDA IPKISS Tutorial 77:在版图一定范围内填充dummy

案例分享&#xff1a;在给定的Shape内填充dummy 所有代码如下&#xff1a; from si_fab import all as pdk from ipkiss3 import all as i3 from shapely.geometry import Polygon, MultiPolygon import numpy as np import matplotlib.pyplot as pltclass CellFilledWithCon…...

TON生态小游戏开发:推广、经济模型与UI设计的建设指南

随着区块链技术的快速发展&#xff0c;基于区块链的Web3游戏正引领行业变革。而TON生态小游戏&#xff0c;借助Telegram庞大的用户基础和TON&#xff08;The Open Network&#xff09;链上技术&#xff0c;已成为这一领域的明星之一。国内外开发者正迅速涌入&#xff0c;开发和…...

Python 量子机器学习:基础概念、关键算法与应用实践

&#x1f31f; Python 量子机器学习&#xff1a;基础概念、关键算法与应用实践 目录 &#x1f30d; 量子计算的基本原理 量子位、叠加、纠缠等概念解析量子计算如何影响机器学习&#xff1a;速度与效率的提升 &#x1f680; 量子机器学习中的关键算法 量子支持向量机&#xf…...

信息安全数学基础(29) x^2 + y^2 = p

前言 方程 x2y2p 是一个涉及整数解和素数 p 的二次方程。这个方程在数论和几何中都有重要的意义&#xff0c;特别是在研究圆的整数点和费马大定理的背景下。 一、定义与背景 方程 x2y2p 表示一个平面上的圆&#xff0c;其圆心在原点 (0,0)&#xff0c;半径为 p​&#xff08;当…...

ChatGPT国内中文版镜像网站整理合集(2024/10/06)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…...

图文深入理解Oracle DB Scheduler

值此国庆佳节&#xff0c;深宅家中&#xff0c;闲来无事&#xff0c;就多写几篇博文。今天继续宅继续写。本篇图文深入介绍Oracle DB Scheduler。 Oracle为什么要使Scheduler&#xff1f; 答案就是6个字&#xff1a;简化管理任务。 • Scheduler&#xff08;调度程序&#x…...

gin如何具体利用Server-Send-Events(SSE)实时推送技术实现消息推送

目录 业务场景 解决方案 1. 轮询 2. WebSocket 3. SSE(Server-Send-Events) 代码实现 总结 业务场景 在抖音、美团等APP中&#xff0c;我们经常会遇到APP内部的消息推送&#xff0c;如关注的人的动态消息推送、点赞评论互动消息推送以及算法推荐消息推送。这些场景都是…...

写端口-tcp udp不同方式发包和接包

最近一直在学习网络编程&#xff0c;今天把 socket部分做一个总结。 Python 的socket库可以实现不同协议不同地址的发包和收包&#xff0c;无奈资料很少&#xff0c;官方例子有限&#xff0c;大神博客很少提及&#xff0c; 经过一番尝试后&#xff0c;总结以下几点用法以便大家…...

计算机的错误计算(一百二十)

摘要 探讨在许多应用中出现的函数 的计算精度问题。 例1. 考虑在许多应用中出现的函数 计算 不妨在Python下计算&#xff1a; 若用下列Rust代码在线计算&#xff1a; fn f(x: f64) -> f64 {(x.exp() - 1.0) / x }fn main() {let result f(0.9e-13);println!("…...

告别裸机!用状态机思路重构你的51单片机温度监测程序(以DS18B20为例)

告别裸机&#xff01;用状态机思路重构你的51单片机温度监测程序&#xff08;以DS18B20为例&#xff09; 在嵌入式开发中&#xff0c;51单片机因其简单易用、成本低廉而广受欢迎。但当项目复杂度上升时&#xff0c;传统的"while循环延时"式代码往往会陷入维护噩梦——…...

Python实战:用Statsmodels搞定简单线性回归(附NO浓度预测案例)

Python实战&#xff1a;用Statsmodels搞定简单线性回归&#xff08;附NO浓度预测案例&#xff09; 在数据分析领域&#xff0c;线性回归是最基础却最实用的统计方法之一。无论你是市场分析师预测销售额&#xff0c;还是环境科学家研究污染物分布&#xff0c;掌握线性回归都能让…...

别被TMOS吓到!拆解沁恒CH579蓝牙例程,看事件驱动如何简化你的代码

别被TMOS吓到&#xff01;拆解沁恒CH579蓝牙例程&#xff0c;看事件驱动如何简化你的代码 第一次打开沁恒CH579的蓝牙例程&#xff0c;看到满屏的TMOS_前缀函数和eventID定义&#xff0c;是不是瞬间头皮发麻&#xff1f;作为从51单片机转战蓝牙开发的工程师&#xff0c;我完全理…...

axure-cn语言包:让Axure RP全版本界面无缝切换至中文的完整指南

axure-cn语言包&#xff1a;让Axure RP全版本界面无缝切换至中文的完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-…...

【愚公系列】《剪映+DeepSeek+即梦:短视频制作》026-字幕:用文字来美化画面(美化字幕)

&#x1f48e;【行业认证权威头衔】 ✔ 华为云天团核心成员&#xff1a;特约编辑/云享专家/开发者专家/产品云测专家 ✔ 开发者社区全满贯&#xff1a;CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主 ✔ 技术生态共建先锋&am…...

2026最权威AI论文平台榜单:这些被高校和导师悄悄推荐的工具你还没用?

AI论文平台正成为学术研究的重要助力工具&#xff0c;其在提升写作效率、确保内容合规性方面展现出显著价值。依托权威检测机构、高校实测数据及用户真实反馈&#xff0c;2026年最值得信赖的AI论文平台已逐渐浮出水面&#xff0c;它们不仅功能全面&#xff0c;更深度适配中文论…...

OpenClaw版本升级:GLM-4.7-Flash环境无缝迁移指南

OpenClaw版本升级&#xff1a;GLM-4.7-Flash环境无缝迁移指南 1. 为什么需要升级&#xff1f; 上周我在本地开发环境遇到一个棘手问题&#xff1a;OpenClaw的旧版本无法正确解析GLM-4.7-Flash模型返回的JSON响应。经过排查发现是框架对数组嵌套结构的处理存在兼容性问题。这促…...

告别特征点!FAST-LIVO2的‘直接法’融合:如何用原始点云和图像块实现更快的SLAM?

FAST-LIVO2&#xff1a;直接法SLAM的革命性突破与工程实践指南 1. 直接法SLAM的技术演进与核心价值 当波士顿动力的Atlas机器人完成后空翻动作时&#xff0c;其核心定位系统正面临着与人类体操运动员相似的挑战——如何在高速运动中维持对环境的精确感知。这正是FAST-LIVO2这类…...

Harmonyos应用实例193:圆与方程探索

5. 圆与方程探索 功能简介:输入圆心坐标和半径,绘制圆并显示标准方程,探索圆与直线的位置关系。这是一个功能强大的圆方程计算器,支持通过滑块交互式调整圆心坐标和半径,实时绘制圆形并显示标准方程。用户可选择显示直线,通过调整斜率和截距探索圆与直线的位置关系,系统…...

从学术研究到工业部署,Python张量框架选型决策树(含模型规模×硬件约束×团队能力×合规要求4维评估矩阵)

第一章&#xff1a;从学术研究到工业部署&#xff0c;Python张量框架选型决策树&#xff08;含模型规模硬件约束团队能力合规要求4维评估矩阵&#xff09;在将深度学习模型从论文实验推向生产环境的过程中&#xff0c;张量框架的选择远不止“谁更流行”的简单判断。它是一次多目…...