Matplotlib Animations 数据可视化进阶

【matplotlib】绘制动态图像 利用matplotlib.animation 绘制动态图像 包括动态线和动态的二维图像结果显示 阅读详情
点击上方 “AI派 ”, 选择“ 设为星标 ”
最新分享,第一时间送达!

640?wx_fmt=jpeg


来源:AI开发者

如果你对我的代码有兴趣,可以在我的 GitHub 查看。当你第一次执行时,代码会报错(我一直没有解决),但是同样的代码框再执行一次,就能够正常跑通了。Matplotlib 是一个专业的数据可视化的 Python 包。除了折线图、直方图和热力图,Matplotlib HIA可以实现一些简单的动画。

如下图所示,以John Conway 的游戏人生,作为我第一个 Python 动画的素材。 这个 gif 图的最后结果:
640?wx_fmt=png

游戏人生  

如果你对我如何对游戏人生进行编程感兴趣,可以查看我 GitHub 上面的代码(和评论)。 这篇博客侧重如何在 Python 中使用 Matplotlib 增加动画。
如果对这个模拟过程不熟悉(过程更像模拟而非正在玩游戏),这里有一些建议:
  • 我们首先建立一个 N x N 大小的面板 (在我们目前讨论的面板中是 50 x 50)。
  • 我们随机选择一部分格子进行填充 (首次模拟,我随机在2500个格子里面填充了1500个),这里的一个格子代表一个单元格
  • 每一个填充的格子的周围至多有一个格子为死亡
  • 每一个填充的格子的周围有至少四个格子不会死亡
  • 每一个填充的格子的周围有两到三个格子存活
  • 每一个被三个填充格子相邻的空格子将会成为一个新的单元格


开始

我们先引入我们需要的 Python 包,利用 matplotlib 动画模块的 FuncAnimation() 函数。
import time	
from IPython import display	
import matplotlib.pyplot as plt	
import matplotlib.animation as animation
FuncAnimation()  陆续重复调用函数,是的一个图片动画化,每一次调用更新一次图片。 下面将一步步解释这个过程。
首先,我们先初始化面板。 以下几行代码将产生输入数据:
  • 我们想要一个 50x50 大小的面板。
  • 填充变量使计算相邻单元格变得更容易,通过用总是空的额外单元格填充边缘,我们使它不需要编写额外的逻辑来处理板的边缘。 因此,我们的50x50板被一个空单元格边界包围,使得实际的numpy数组的大小为52 x52。  
  • 变量 initial_cells 代表我们想要初始化的单元格数量,他们会随机在面板上产生。
# Input variables for the board	
boardsize = 50        # board will be X by X where X = boardsize	
pad = 2               # padded border, do not change this!	
initial_cells = 1500  # this number of initial cells will be placed 	
                      # in randomly generated positions	
接下来我们在初始化的单元格上随机生成1500个坐标,这些坐标保存在变量pos_list。	
# Get a list of random coordinates so that we can initialize 	
# board with randomly placed organisms	
pos_list = []	
for i in range(initial_cells):	
    pos_list.append([random.randint(1, boardsize), 	
                     random.randint(1, boardsize)])
然后轮到实例化这个面板。 使用 numpy 向量 my_board 代表我们的面板,我们初始化52x52结构的向量,值都是0(由于边缘填充所以比50x50大一些),然后调用函数 init_board() 使用 pos_list 中的坐标填充面板。 具体查看  GitHub 。
# Initialize the board	
my_board = np.zeros((boardsize+pad, boardsize+pad))	
my_board = init_board(pos_list, my_board)

设置面板的动画

我们一直在等待的部分——动画! 首先,我们需要做一些例行工作。 用下面几行代码创建matplotlib图形,它将用于显示我们的动画。
# Required line for plotting the animation	
%matplotlib notebook	
# Initialize the plot of the board that will be used for animation	
fig = plt.gcf()
是时候做第一帧了,matplotlib中的imshow()函数接受一个numpy矩阵并将其呈现为图像,酷~
# Show first image - which is the initial board	
im = plt.imshow(my_board)	
plt.show()
我们传递imshow()的变量是我们的初始面板,它存储在my_board中。 创建的图像是这样的:

640?wx_fmt=png  棋盘的初始状态(黄色=单元格 )

现在我们要加一个辅助函数给 FuncAnimation() 调用。 辅助函数 animate() 的输入是帧数,指明当前是第几帧。 在 FuncAnimation() 中,每过一帧,就会调用一次 animate() 并且把帧数作为参数输入。 animate() 里会先调用 update_board() 更新当前的面板, 然后通过 set_data() 将更新的面板显示出来。
# Helper function that updates the board and returns a new image of	
# the updated board animate is the function that FuncAnimation calls	
def animate(frame):	
    im.set_data(update_board(my_board))	
    return im,
恭喜,现在就可以顺利使用 FuncAnimation() 了。 注意函数的输入参数:  
  • fig 是我们先前建立的用来显示动画的容器变量。
  • animate 函数是刚刚写的由 FuncAnimation() 通过帧数来调用的函数(帧数参数会自动传入,不需要声明)。
  • frames 是动画最大帧数的限制,这里我们设置成 200 帧,也就是说 200 帧后动画会自动结束。
  • interval 是每两帧的间隔时间,单位为毫秒。 这里我们用 50 毫秒。
# This line creates the animation	
anim = animation.FuncAnimation(fig, animate, frames=200, interval=50)
这样就完成了,还可以吧? 最终效果是这样的
640?wx_fmt=png

结论

我希望这对你有帮助。 在我结束之前,让我来集思广益一些更多的数据科学,比如我们今天学到的动画功能的应用:
  • 一次次地进行蒙特卡罗模拟,以便观察结果分布是如何逐渐形成的。
  • 遍历时间序列数据,以便描述模型或数据在新观测数据到达时的反应。
  • 突出显示你的算法识别的集群如何随着输入(如集群数量)的改变而改变。
  • 关联随时间或跨数据的不同子样本的热图,以可视化不同的样本可能如何影响模型的估计参数。

via:https://github.com/yiuhyuk/game_of_life


(完)





640?wx_fmt=jpeg

?关注“Python与人工智能社区”


王老湿目前建立了Python、爬虫、数据分析、机器学习、AI实战、自然语言处理、计算机视觉、推荐系统等方向的读者交流群,大家可以添加王老湿的微信进行加群

640?wx_fmt=png
?长按识别,添加王老湿微信



近期专栏推荐 (点击下方标题即可跳转)


1. 

2. 

3. 

4. 

点下「在看」,给文章盖个戳吧!?

人工智能开发实战matplotlib库应用基础 matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成高质量的图形。 matplotlib 尝试使容易的事情变得更容易,使困难的事情变得可能。 阅读详情

相关推荐

ANSYS FLUENT汽车外流场仿真保姆级教程:从ICEM网格导入到后处理结果分析

本文详细介绍了使用ANSYS FLUENT进行汽车外流场仿真的全流程,包括三维结构网格导入、物理模型配置、边界条件设置和后处理结果分析。特别强调了网格优化、湍流模型选择和数值计算中的关键技巧,帮助工程师高效完成高精度仿真任务。

weixin_30512043的博客 391

matplotlib-Animation 3:图像动画效果

一代码 参考官网 """ ================= An animated image ================= This example demonstrates how to animate an image. """ import numpy as np import matplotlib.pyplot as plt import ...

weixin_30482383的博客 215

使用pandas进行量化回测(akshare)

本人看法,也就比excel高级一点,距离backtrader这些框架又差一点。做最基础的测试可以,如果后期加入加仓功能,或者是止盈止损等功能,很不合适。只能做最简单的技术指标测试。所以别太当回事。 导包,常用包导入: import os import akshare as ak import requests import numpy as np import pandas as pd import matplotlib.pyplot as plt import talib as ta %matplo

qq_26742269的博客 3483

巧用 Matplotlib 动画,让你的 Python 可视化大放异彩

柠檬2069点击右侧关注,遇见更好的自己!巧用 Matplotlib 动画让你的 Python 可视化大放异彩作者:Tony Yiu翻译:Hanz整理:Lemonbit译...

Python数据之道 1072

从仿真到流片:手把手教你优化65nm CMOS电荷泵的电流匹配与稳定性

本文详细介绍了在65nm CMOS工艺下优化电荷泵电流匹配与稳定性的工程实践指南。通过蒙特卡洛仿真、运放反馈结构版图技巧和全差分结构设计,实现优于1%的电流匹配精度和±2%以内的电流稳定性,特别针对current mismatch问题提供了有效的解决方案。

weixin_42522320的博客 417

浙政钉(专有钉钉)门户免登(超详细)

钉钉家族 介绍浙政钉门户免登之前,首先搞清楚几个软件的关系,软件分别是:钉钉,专有钉钉,浙政钉 钉钉 是阿里巴巴集团专为中小企业打造的沟通和协同的多端平台。 专有钉钉 原名 政务钉钉,有更开放的设计能力、集成能力、更结构化协同产品、更定制化开发平台。支持专有化部署,数据落本地,更安全、客户可对该产品持牌运营、结构化编排,协助构建本地应用中心、提供移动应用全面安全保障体系。 浙政钉 为规范浙政钉整体架构体系,按照统分结合原则,由省政府办公厅统一设计整体工作界面和系统框架,统筹指导全省统建应用建设,各单

一缕南风的博客 2万+

Matplotlib 在图表中嵌入图片 -- `imshow` 的各种用法解析

Matplotlib 在图表中嵌入图片 Matplotlib 是一个用于绘制图表的 Python 标准库,可以用来完成可视化、数据分析、动画制作、科研制图等任务。本文介绍如何在 Matplotlib 的图表中嵌入图片。Matplotlib 中用来显示图片的基本函数是 plt.imshow,根据不同的用途,该函数有多种用法,本文将一一介绍。

weixin_43265267的博客 1万+

别再手动盘点了!教你给微信小程序仓库系统加个‘扫码枪’:完整扫码入库与查询功能实现

本文详细介绍了如何为微信小程序仓库系统添加扫码入库与查询功能,实现零硬件成本的智能仓储管理。通过优化摄像头参数、增强动态识别算法和深度整合业务逻辑,提升扫码精度和效率,同时提供混合查询方案应对复杂场景。这套方案显著提升入库效率,降低错误率,适用于各类仓储管理需求。

weixin_30844577的博客 305

matplotlib从起点出发(6)_Tutorial_6_Animations

matplotlib Tutorial 6 Animation

耳东小白的小笔记本儿 1271

【YOLO26实战全攻略】09——YOLO26多目标跟踪实战宝典:从原理到智慧园区人流统计全流程

多目标跟踪(MOT)是视频分析的核心技术,解决了单帧检测无法关联目标身份的痛点。本文基于YOLO26轻量化检测模型与ByteTrack跟踪算法,从新手视角出发,系统讲解多目标跟踪的核心原理、环境搭建、实操步骤与工程落地。内容涵盖ByteTrack分层关联策略解析、YOLO26集成跟踪的一行代码实现、配置参数调优、区域计数、轨迹数据提取与热力图可视化,最终通过智慧园区人车流量统计虚拟案例,完整呈现从技术原理到实际应用的全流程。本文注重实用价值,所有代码可直接复现,参数配置附带场景化建议,帮助新手快速上手。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 357

TSN新技术,让您的设备网络“更实时、更确定、更安全”

近日,工业和信息化部发布了2022年第23号公告,批准发布行业标准YD/T 4134-2022《工业互联网时间敏感网络需求及场景》。该标准是国内首个时间敏感网络(TSN)技术标准,标志着我国TSN技术标准体系建设迈出了坚实的一步,对构建工业互联网网络标准体系具有重要意义。TSN源于Time-Sensitive Networking的缩写,中文译名为时间敏感网络,因其具备的确定性和微秒级交互特性,受到了对实时性要求较高的工业控制领域的关注。TSN与工业数智化。

创龙,嵌入式一体化解决方案商 772

python数据动态可视化进阶版,Matplotlib Animations 数据可视化进阶

原标题:Matplotlib Animations 数据可视化进阶如果你对我的代码有兴趣,可以在我的GitHub查看。当你第一次执行时,代码会报错(我一直没有解决),但是同样的代码框再执行一次,就能够正常跑通了。Matplotlib 是一个专业的数据可视化的 Python 包。除了折线图、直方图和热力图,Matplotlib HIA可以实现一些简单的动画。如下图所示,以John Conway 的游...

weixin_29801195的博客 322

超详细!Linux 服务器 6 大核心性能测试(附自动脚本 + 结果分析秘籍)---Linux 服务器性能测试文档

本文档旨在提供 Linux 服务器的 CPU、内存和磁盘性能测试方案,包括详细的测试大纲、操作步骤以及一键化测试脚本,帮助管理员快速评估服务器性能状况。通过以上测试方案,可以全面评估 Linux 服务器的 CPU、内存和磁盘性能,为系统优化、容量规划和问题排查提供重要参考依据。使用 sysbench 进行 CPU 基准测试。使用 sysbench 测试内存读写性能。使用 fio 工具进行更全面的磁盘测试。使用 dd 命令测试磁盘顺序读写性能。使用 dd 命令测试内存读写速度。记录磁盘 IO 性能。

jundao1997的专栏 381

[数据分析与可视化] 基于Python绘制简单动图

动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化。本文的主要介绍在Python中两种简单制作动图的方法。其中一种方法是使用matplotlib的Animations模块绘制动图,另一种方法是基于Pillow生成GIF动图。

You and Me 4648

【CSP-S 提高组】考试大纲集合

【CSP-S提高组】考试大纲集合

weixin_42596089的博客 7260

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

巧用Matplotlib动画,让你的Python可视化大放异彩

(▲由Python大本营付费下载自视觉中国)作者 | Tony Yiu翻译 | Hanz整理 | Lemonbit译文出品 | Python数据之道前言如果你对本文的代码...

Python大本营的博客 981

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

chatgpt赋能python:如何用Python制作动画——ABeginner’sGuide

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

www_xuhss_com的博客 437

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

5 个 Manim 插件扩展库:从零搭建数学动画的实用指南

用 Manim 做数学动画,核心框架能覆盖大部分画面,但真正上手做完整作品时,总有一些需求卡住你:魔方的逐层旋转、数据驱动的动态图表、分步推导的公式讲解、带碰撞的刚体演示……这些"最后一公里"的效果,自己从零写既费时又容易出错。而 Manim 的插件/扩展库机制正是为此设计的——通过 Python 包安装、配置文件里一行启用,就能把社区现成的动画能力接进你的场景。本文按"先认机制、再对场景、最后动

gitblog_00445的博客 398

快速上手 5 个 Manim 插件:社区扩展库的选型、安装与避坑实战

Manim 是社区维护的 Python 数学动画框架,负责把公式、几何图形和坐标轴渲染成可导出的视频。核心库之外,魔方旋转、统计图表、物理碰撞这类特殊效果往往要手写大量代码。Manim 插件正是解决方案:第三方扩展库通过统一入口点接入渲染管线,让你不碰底层也能直接复用调好的动画组件。下面挑 5 个社区扩展库,讲清怎么选、怎么装、怎么验。 [![Manim 插件生态中的数学动画渲染示例](http

gitblog_00074的博客 951

开发者视频创作指南:Timeline与Code思维深度解析

视频创作的核心在于将静态视觉元素转化为动态序列,其底层原理涉及时间线编排与程序化生成两种范式。Timeline思维以非线性编辑软件(如Adobe After Effects)为代表,通过可视化轨道和关键帧实现帧级精确控制,适合艺术化、精细调整的合成场景。Code思维则依托编程库(如Manim、FFmpeg),将动画抽象为数据、函数和逻辑,通过脚本驱动实现参数化、可复用的自动化生成,尤其擅长处理数据可视化、批量制作等工程化需求。理解这两种思维的本质差异与融合之道,能帮助开发者在自动化报告、产品演示等场景中,高

weixin_34161032的博客 387

Manim插件实战指南:5个让数学动画效率翻倍的扩展

上次做数学教学视频,我想演示一个魔方旋转和图表生长动画,Manim 核心里每个小效果都得自己写——光是一个旋转角度就调了一百多行代码。Manim 的插件系统就是为这种缺口准备的:一条 pip 命令装好,配置文件里加一行启用,马上能用。下面按"你想做什么"的路线,把 5 个常用扩展的安装、启用和组合方式一次讲清。 ## 3分钟跑通:第一条插件命令 以最小的魔方插件为例,安装只需要一条命令: `

gitblog_00996的博客 449

自带 API Key 即可上手:Open WebUI Computer 内置 AI Agent 工具调用与 Plan 模式详解

Open WebUI Computer(命令行代号 `cptr`)是一个把整台电脑服务到浏览器的开源工作站工具,内置 **AI Agent**,只需自带 API Key 就能让 AI 直接在你的电脑上**调用工具**——读文件、改代码、跑命令、上网搜索,还能开启 **Plan 模式**:先出实施计划、等你批准后才动手写文件。 [![Open WebUI Computer 内置 AI Agent

gitblog_00621的博客 100

Python Akshare库:金融数据获取与分析的利器

更多Python学习内容:ipengtao.com在金融数据分析领域,数据的获取和处理是至关重要的环节。Python的Akshare库提供了一种便捷的方式来获取各类金融数据,包括股票、期货、基金、外汇等,并且支持对这些数据进行分析和可视化。本文将详细介绍Akshare库的功能、安装与配置、基本和高级用法,以及如何在实际项目中应用它。Akshare库简介Akshare是一个基于Python的金融数据...

GitHub_miao的博客 9867

用matplotlib的Animation画动图

摘要:本文通过几个例子学习了 matplotlib.animation 画动图的方法 --- 对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章 我的网站:潮汐朝夕的生活实验室 我的公众号:潮汐朝夕 我的知乎:潮汐朝夕 我的github:FennelDumplings 我的leetcode:FennelDumplings 我们在使用 matplotlib 时,常用的是 pyplot,可以画各种静态图,常见的代码模板如下 fig = plt.figure() ax = fig.add_su

计算机、人工智能、算法和数学 5989

matplotlib.pylot绘图显示两次问题

从昨天晚上开始调用plt.imshow(image)和plt.show()运行的时候会发现会绘两次,有些不可思议,没有循环也没套用怎么会出现两次的情况,然后检查代码没有发现问题,最后检查了一下import 模块,看到我引用了keras了,但没调用,随手把keras模块去掉后居然绘图正常了,不过现在还是没有弄清楚为何引入keras会影响到绘图呢。

源式羽语 2408
上一篇: 这位机器学习大佬!他梳理了完整的学习路线!
下一篇: 特征选择怎么做?这篇文章告诉你
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值