最最简单的操作
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.subplots()x = np.linspace(0,10,100)
y = np.sin(x)while True:
ax.plot(x,y)
plt.pause(1)
ax.cla()
x += np.pi/30
y = np.sin(x)
有人会问,为什么不能直接 用 plot 替代 ax 呢?
好问题,你可以一试,会发现这玩意没法关掉 。。 当然ctrl + C等暴力手段是任何时候都ok的
Animation类 FuncAnimation
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
fig | 显示动画的figure对象 |
func | 更新动画的函数(你得自己写的那一部分) func函数的第一个参数为帧序号。 返回值是更新后的图形对象列表。 |
frames | 由帧序号组成的列表 frames是数值时,相当于range(frames) 默认值为itertools.count 表示一个从0开始,步长为1的无限递归序列 |
init_func | 开始帧序号 |
fargs | 其他需要传递给func函数的参数 |
interval | 以毫秒为单位的动画更新周期 |
repeat | 布尔值,默认为True |
repeat_delayint | 默认为0,单位为毫秒,表示动画循环间隔。 |
blit | 更新所有点或更新发生变化的点 |
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
fig = plt.figure()
ax = fig.subplots()x = np.linspace(0,10,100)
y = np.sin(x)
ax.set_aspect(3)
ax.plot(x,y,'-.',c='red',label="the old one")
line = ax.plot(x,y,c='green')
plt.legend()def fun(i):
global x
x += 0.1
y = np.sin(x)
line[0].set_ydata(y)
return lineanimation = FuncAnimation(fig,fun,interval=100)
plt.show()
这就有两个问题需要解决一下
第一个:line到底是什么类型的东西
type(line)
明显,这就是。。列表。
第二个:set_data; set_xdata; set_ydata
你可以自己更改一下试试看,结果是显而易见的
ArtistAnimation 它的好处是你不要费尽心机去想一个可能 勾八 的函数了
它的坏处是
一个能用函数表示的动画 为什么要在新增一个列表才能表达呢?
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation
fig = plt.figure()
ax = fig.subplots()frames = []
x = np.linspace(0,np.pi*2,10)
for i in range(20):
x += np.pi*2/20
y = np.sin(x)
frames.append(ax.plot(y,'-.',c='red'))animation = ArtistAnimation(fig,frames,interval=100)
plt.show()
很好
现在只需要保存动画就圆满了
动画保存 .save()函数
filename | 画文件名+后缀 |
fps | 动画每秒的帧数默认值为 原动画的帧数 |
dpi | 动画每英寸的点数 默认值为 原动画的点数 |
codec | 编码格式 默认值为’h264’ |
animation.save("1.gif")
文章图片
【Python语言程序设计|基于Python-matplotlib 的动画绘制问题】
推荐阅读
- 资讯|一个 Python Bug 干倒了估值 1.6 亿美元的公司
- C语言|动态内存管理与柔性数组
- 机器学习|【机器学习实战】决策树——构造决策树
- 目标检测|研究一下带旋转的目标检测工作
- java|Java计算机毕业设计停车场信息管理系统源码+系统+数据库+lw文档
- python|计算机毕业设计Python+Django的闲置物品交易系统+二手商城网站(源码+系统+mysql数据库+Lw文档)
- 深度学习|【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(一~二)(概述和TensorFlow2.0和2.4和GPU环境的安装和使用)
- R语言|R语言基于ggplot绘制多条ROC曲线(2)
- Java|亿级IM系统