用Python图形绘制-简单动画,你们都学会了吗?
itomcoil 2025-01-21 18:35 23 浏览
Matplotlib 是一个非常广泛的库,它也支持图形动画。 动画工具以 matplotlib.animation 基类为中心,它提供了一个框架,围绕该框架构建动画功能。 主要接口有TimedAnimation和FuncAnimation,两者中FuncAnimation是最方便使用的。
1 画螺旋曲线代码
# importing required modules
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
# create a figure, axis and plot element
fig = plt.figure()
ax = plt.axes(xlim=(-50, 50), ylim=(-50, 50))
line, = ax.plot([], [], lw=2)
# initialization function
def init():
# creating an empty plot/frame
line.set_data([], [])
return line,
# lists to store x and y axis points
xdata, ydata = [], []
# animation function
def animate(i):
# t is a parameter
t = 0.1*i
# x, y values to be plotted
x = t*np.sin(t)
y = t*np.cos(t)
# appending new points to x, y axes points list
xdata.append(x)
ydata.append(y)
# set/update the x and y axes data
line.set_data(xdata, ydata)
# return line object
return line,
# setting a title for the plot
plt.title('A growing coil!')
# hiding the axis details
plt.axis('off')
# call the animator
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=500, interval=20, blit=True)
# save the animation as mp4 video file
anim.save('animated_coil.mp4', writer = 'ffmpeg', fps = 30)
# show the plot
plt.show()
2 输出
此图为动画截图。
3 代码的部分解释
现在让我们来逐段分析代码:
fig = plt.figure()
ax = plt.axes(xlim=(-50, 50), ylim=(-50, 50))
line, = ax.plot([], [], lw=2)
1)首先创建一个图形,即所有子图的顶级容器。
2)然后创建一个轴元素 ax 作为子图。 在创建轴元素时还定义了 x 和 y 轴的范围/限制。
3)最后,创建名为 line, 的 plot 元素。 最初,x 和 y 轴点已定义为空列表,线宽 (lw) 已设置为 2。
def init():
line.set_data([], [])
return line,
4)声明一个初始化函数 init 。 动画师调用此函数来创建第一帧。
def animate(i):
# t is a parameter
t = 0.1*i
# x, y values to be plotted
x = t*np.sin(t)
y = t*np.cos(t)
# appending new points to x, y axes points list
xdata.append(x)
ydata.append(y)
# set/update the x and y axes data
line.set_data(xdata, ydata)
# return line object
return line,
5)这是上述程序最重要的功能。 animate() 函数被动画师一次又一次地调用来创建每一帧。 调用此函数的次数由帧数决定,该帧数作为帧参数传递给动画师。
6)animate() 函数以第 i 个帧的索引作为参数。
t = 0.1*i
7)我们巧妙地使用了当前帧的索引作为参数!
x = t*np.sin(t)
y = t*np.cos(t)
8)由于有了参数 t,可以轻松地绘制任何参数方程。 例如,使用参数方程绘制螺旋线。
line.set_data(xdata, ydata)
return line,
9)使用 set_data() 函数设置 x 和 y 数据,然后返回绘图对象 line, 。
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=500, interval=20, blit=True)
10)创建 FuncAnimation 对象 anim 。它需要下面解释的各种参数:
fig:要绘制的图形。
animate:为每一帧重复调用的函数。
init_func:函数用于绘制清晰的框架。它在第一帧之前被调用一次。
frames:帧数。
interval:帧之间的持续时间。
blit:设置 blit=True 意味着只会绘制那些已经改变的部分。
相关推荐
- C++ 详解 to_string 与 stoi 函数
-
to_string与stoi函数std::to_string和std::stoi是C++标准库中的两个非常有用的函数,它们分别用于将整数转换为字符串和将字符串转换为整数。std::to...
- 合并单元格内容,除了“&”,三个函数一个比一个厉害
-
在EXCEL表格里有多种方法可以合并多列单元格的内容,最常见的就是使用连接符号“&”和各种函数公式,下面我们一起来看看。使用连接符号公式:=A2&"-"&B2&"-"&...
- C语言模拟实现字符串操作函数(c语言字符串用法)
-
1.strlenstrlen是用来求字符串长度的函数,字符串长度就是字符串中包含的字符的个数,但是不包含字符串结尾的‘\0’实现strlen有三种方法:(1)定义一个计数器size_t ...
- JS函数参数的arguments对象,你理解了吗?
-
前言在Javascript中,arguments是所有函数都具有的一个内置局部变量,表示的是函数实际接收的参数对象。Javascript中的arguments对象arguments是一个类数组对象,之...
- C/C++编程笔记:C语言字符串比较函数,超详细,值得收藏
-
void*memset(void*dest,intc,size_tcount);将dest前面count个字符置为字符c.返回dest的值.void*memmove(void*dest...
- Excel表格中11个常用的字符串函数
-
今天和大家聊聊常用的字符串函数,在不同的条件下,如何选择字符串函数很关键。下面我为大家列举了11个关于字符串的函数公式。一、EXACT(两个字符串进行结果比较)比较两个字符串是否完全相同(这里是要区分...
- C语言每日一练:连接字符串(c语言 连接字符串)
-
题目描述:写一函数,将两个字符串连接。输入两行字符串,例如123abc,输出连接后的字符串123abc。代码如下:#include<stdio.h>#include<st...
- C语言编程二级——如何连接3个字符串
-
今天C语言编程实践给大家带来的是不使用库函数,实现3个字符串的链接。本例用到了指针方法,下面是源代码。本例用到了函数声明,一个字符串连接函数。将s1,s2,s3连接在一起,组成s,并且函数最终返回指向...
- 快速合并字符串,除了用&外,还有这些必备技能
-
字符串的合并操作,在Excel中也是非常常见的,最常见的操作方法就是逐个复制合并或者用&符号连接合并。其实,除了这2个方法外,还有其他更实用的技巧哦!一、&符号法。目的:合并指定的字符串。方法:在目标...
- 什么是安全函数?(什么是安全函数模型)
-
公司的大佬说之前某大厂为了安全函数的替换耗资10亿美金。可想安全很重要,安全函数很重要,对于我们做系统软件的来说很重要。为什么要替换成安全函数,这里面就涉及到了一种漏洞攻击,缓冲区溢出攻击。缓冲区溢出...
- Excel如何合并字符串?CONCAT/PHONETIC/TEXTJOIN函数功能对比
-
多个单元格的内容如何合并到一个单元格?Excel一共提供四个函数,可以实现字符串的合并,但是会受到Excel版本的限制,且功能各有优异。PHONETIC函数PHONETIC存在于2016及以上版本中,...
- 「零基础学C语言」带你解析字符串连接函数:strcat_s 函数
-
目录一.strcat_s函数简介二.strcat_s函数原理三.strcat_s函数实战一.strcat_s函数简介strcat_s函数和strcat函数一样,主要用于字符串拼接;strcat...
- 强烈推荐!284页《python编程从入门到实践》完整版,PDF开放下载
-
大佬整理的python学习笔记,大家有需要的可以在文末获取。PDF获取方式:...
- 无需安装python程序,推荐6个靠谱网站在线学习编写python代码
-
对于python编程爱好者来说,并不是所有爱好者都已经安装了python程序(比如python3.12版本的exe程序),或者一些IDE(比如pycharm等),大家无需担心,马上推荐几个国内可用的靠...
- 《Python从入门到项目实践》PDF开放下载,建议收藏
-
Python从入门到项目实践》一书从入门学习者的角度出发,通过简洁有趣的语言、丰富多彩的实例、挑战大脑的任务、贴近开发实战的项目,循序渐进地让读者在实践中学习,在实践中提升实际开发能力。...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)