matplotlib绘制动画的示例

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

matplotlib从1.1.0版本以后就开始支持绘制动画

下面是几个的示例:

第一个例子使用generator,每隔两秒,就运行函数data_gen:

# -*- coding: utf-8 -*- 

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()
axes1 = fig.add_subplot(111)
line, = axes1.plot(np.random.rand(10))

#因为update的参数是调用函数data_gen,所以第一个默认参数不能是framenum
def update(data):
    line.set_ydata(data)
    return line,
# 每次生成10个随机数据
def data_gen():
    while True:
        yield np.random.rand(10)

ani = animation.FuncAnimation(fig, update, data_gen, interval=2*1000)
plt.show()
第二个例子使用list(metric),每次从metric中取一行数据作为参数送入update中:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

start = [1, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0]

metric =[[0.03, 0.86, 0.65, 0.34, 0.34, 0.02, 0.22, 0.74, 0.66, 0.65],
         [0.43, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0.55],
         [0.66, 0.75, 0.01, 0.94, 0.72, 0.77, 0.20, 0.66, 0.81, 0.52]
        ]

fig = plt.figure()
window = fig.add_subplot(111)
line, = window.plot(start)
#如果是参数是list,则默认每次取list中的一个元素,即metric[0],metric[1],...
def update(data):
    line.set_ydata(data)
    return line,

ani = animation.FuncAnimation(fig, update, metric, interval=2*1000)
plt.show()


第三个例子:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

# First set up the figure, the axis, and the plot element we want to animate
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)

# initialization function: plot the background of each frame
def init():
    line.set_data([], [])
    return line,

# animation function.  This is called sequentially
# note: i is framenumber
def animate(i):
    x = np.linspace(0, 2, 1000)
    y = np.sin(2 * np.pi * (x - 0.01 * i))
    line.set_data(x, y)
    return line,

# call the animator.  blit=True means only re-draw the parts that have changed.
anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=200, interval=20, blit=True)

#anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])

plt.show()

第四个例子:

# -*- coding: utf-8 -*-
 
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 每次产生一个新的坐标点
def data_gen():
    t = data_gen.t
    cnt = 0
    while cnt < 1000:
        cnt+=1
        t += 0.05
        yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
data_gen.t = 0

# 绘图
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.set_ylim(-1.1, 1.1)
ax.set_xlim(0, 5)
ax.grid()
xdata, ydata = [], []

# 因为run的参数是调用函数data_gen,所以第一个参数可以不是framenum:设置line的数据,返回line
def run(data):
    # update the data
    t,y = data
    xdata.append(t)
    ydata.append(y)
    xmin, xmax = ax.get_xlim()

    if t >= xmax:
        ax.set_xlim(xmin, 2*xmax)
        ax.figure.canvas.draw()
    line.set_data(xdata, ydata)

    return line,
    
# 每隔10秒调用函数run,run的参数为函数data_gen,
# 表示图形只更新需要绘制的元素
ani = animation.FuncAnimation(fig, run, data_gen, blit=True, interval=10,
    repeat=False)
plt.show()

再看下面的例子:

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

#第一个参数必须为framenum
def update_line(num, data, line):
    line.set_data(data[...,:num])
    return line,

fig1 = plt.figure()

data = np.random.rand(2, 15)
l, = plt.plot([], [], 'r-')
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.xlabel('x')
plt.title('test')

#framenum从1增加大25后,返回再次从1增加到25,再返回...
line_ani = animation.FuncAnimation(fig1, update_line, 25,fargs=(data, l),interval=50, blit=True)

#等同于
#line_ani = animation.FuncAnimation(fig1, update_line, frames=25,fargs=(data, l),
#    interval=50, blit=True)

#忽略frames参数,framenum会从1一直增加下去知道无穷
#由于frame达到25以后,数据不再改变,所以你会发现到达25以后图形不再变化了
#line_ani = animation.FuncAnimation(fig1, update_line, fargs=(data, l),
#    interval=50, blit=True)

plt.show()


Matplotlib系列(七):动画 Matplotlib系列目录 文章目录一、 简介二、 思维导图三、 Matplotlib动画及图形修改操作1. 手写代码更新图形实现动画2. animation模块动画2.1 Animation类简介2.2 FuncAnimation动画2.3 ArtistAnimation动画2.4 保存动画3. 常用图形更新函数参考文章 一、 简介 ‎matplotlib的animation模块可以实现高效的动画绘制,并能够保持到gif或者视频文件中。 ‎matplotlib中的图形,如线条、点、坐标系、柱形图等 阅读详情

相关推荐

用Python打造精彩动画与视频,5.1 Matplotlib基础及其动画功能

在本小节中,我们介绍了Matplotlib的基础知识以及如何创建简单的动画。我们学习了如何绘制基本图表、创建简单动画、保存动画以及创建交互式动画。通过这些知识,你可以开始使用Matplotlib创建各种动画效果,增强数据的可视化效果。

wfbl123456的博客 969

利用matlab绘制函数图像实战

本次实战通过一系列具体案例,全面介绍了MATLAB在数据可视化方面的应用。从基本的安装过程开始,逐步深入到一元函数直线与曲线图像、二元函数平面和曲面图像的绘制方法,展示了如何使用MATLAB进行科学计算和绘图的基本技巧。

howard2005的专栏 3683

Python中的图形绘制-Matplotlib简单动画制作

Matplotlib 是一个非常广泛的库,它也支持图形动画动画工具以 matplotlib.animation 基类为中心,它提供了一个框架,围绕该框架构建动画功能。 主要接口有TimedAnimation和FuncAnimation,两者中FuncAnimation是最方便使用的。 1​​画螺旋曲线代码 # importing required modules import matplotlib.pyplot as plt import matplotlib.animation as ani..

Python4857的博客 1764

matplotlib中绘图常用函数

matplotlib中常用函数 散点图 柱状图 等高线 matplotlib绘制3D图 子图像 动态图 常见设置 一、设置坐标轴 # x轴和y轴的值域 plt.xlim((-1,2)) plt.ylim((-2,3)) # color为线的颜色,linewidth为线宽度,linestyle为样式(-为实线,--为虚线) plt.plot(x,y,color='red',...

不曾走远的博客 1万+

使用matplotlib制作动态图

matplotlib是一个著名的python绘图库,由于其灵活强大的绘图功能使得在python中可视化变得非常容易。

HelloWorldTM的博客 6318

python绘制动画示例_matplotlib绘制动画代码示例

matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_gen:# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationfig = plt.figu...

weixin_34231032的博客 1033

python绘制动画示例_Python使用matplotlib绘制动画的方法

本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下:matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_gen:# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimp...

weixin_39764603的博客 292

使用matplotlib绘制动画

使用matplotlib绘制动画的步骤 本文采用moviewriter来绘制,避免采用matplotlib.animition的动画绘制方法,将动画简化为图片一帧一帧播放。 使用总共三步,如下代码所示。 """ ============== Frame grabbing ============== Use a MovieWriter directly to grab individual fr...

weixin_38102912的博客 701

数据可视化: matplotlib绘制动态图及3维动画

动画可以有趣地展示某种现象。相比于静态图表,人们更容易被动画和交互式的图表所吸引。在描绘时间序列数据时,动画更有意义,例如多年来股票价格的波动,过去十年气候的季节性变化和和趋势,因为我们可以看到特定参数如何随时间变化。 上图是用Matplotlib实现的雨滴模拟,Matplotlib库被人们亲切地称为Python可视化包的祖父。Matplotlib通过设置50个散射点的比例和不透明度的...

心中无码 2万+

Matplotlib绘制动画

使用matplotlib制作静态图表的例子很多,matplotlib的优势在使用Python技术栈实现于类似Matlab风格的图表。 制作动态图表的选择很多,特别是js系,比如Highcharts或者百度的Echarts。 使用matplotlib绘制动画官网给出的有例子。 #coding=utf-8 import sys reload(sys) sys.setdefaultencoding(‘utf-8’) import numpy as np import matplotlib.pyplot as pl

zy835859234的博客 154

【Python 2D绘图】Matplotlib绘图(动画绘制

本文介绍利用经典绘图库Matplotlib绘制基础2D动画图表,为博主自用笔记提纲。

茶色喵的博客 1247

使用Matplotlib绘制3D动画

使用Matplotlib绘制3D动图主角是FuncAnimation函数,通过不断地调用func函数来实现动画,还可以使用save(filename, writer=None, fps=None, dpi=None, codec=None, bitrate=None, extra_args=None, metadata=None, extra_anim=None, savefig_kwargs=No

shinerio的博客 1万+

python matplotlib 绘制sinx动画

python matplotlib 绘制sinx动画 """ 绘制sin函数的动画 """ import numpy as np import matplotlib.pyplot as mp import matplotlib.animation as ma # 准备数据 x = np.linspace(0, 2 * np.pi, 500) y = np.zeros_like(x) # 绘制图片 mp.figure("Sin(x) Animation", facecolor="lightgray

廷益_飞鸟的博客 2994

matplotlib绘制动画

  matplotlib从1.1.0版本以后就开始支持绘制动画,具体使用可以参考官方帮助文档。下面是一个很基本的例子: """ A simple example of an animated plot """ import numpy as np from matplotlib import pyplot as plt from matplotlib import animatio...

weixin_34337265的博客 107

python如何制作动画的软件_Python使用matplotlib绘制动画的方法

本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下:matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_gen:# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimp...

weixin_39832829的博客 156

Python 运用 Matplotlib 绘制动画图的流程

Matplotlib 是 Python 中一个功能强大的绘图库,它可以创建各种静态、交互式的图表。而运用 Matplotlib 绘制动画图则为数据的可视化增添了动态的效果,能够更直观地展示数据随时间或其他变量的变化。本文的目的是详细介绍使用 Matplotlib 绘制动画图的完整流程,涵盖从基础概念到实际应用的各个方面,范围包括动画的基本原理、核心算法、数学模型、项目实战以及相关资源推荐等。本文首先介绍背景知识,包括目的、预期读者和文档结构。接着讲解核心概念,如动画的原理和架构。

AI Python 编程之道的博客 523
上一篇: 测试如何将MatPlotLib嵌入到wxPython中
下一篇: 用MATLAB做聚类分析时非常有用的自定义距离函数和标准化函数
一懒百邪生
博客等级 码龄18年 518粉丝 205原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值