目录
- 最最简单的操作
 - Animation类
 - FuncAnimation
 - ArtistAnimation
 - 动画保存
 - .save()函数
 
最最简单的操作
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

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 line
 
 
animation = FuncAnimation(fig,fun,interval=100) 
plt.show() 
这就有两个问题需要解决一下
第一个:line到底是什么类型的东西
type(line) <class 'list'>
明显,这就是。。列表。
第二个: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’ | 
filename画文件名+后缀fps动画每秒的帧数 默认值为 原动画的帧数dpi动画每英寸的点数 默认值为 原动画的点数codec编码格式 默认值为’h264’
animation.save("1.gif")

	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)