当前位置: 首页 > 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!("…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...