用animation画一个y=sin(x)的动画函数。
代码如下:
-
from numpy
import *
-
import matplotlib.pyplot
as plt
-
from matplotlib
import animation
-
-
fig,ax=plt.subplots()
#相当于fig=plt.figure(),ax=plt.subplot();ax=plt.subplot也可以是ax=fig.add_subplot()
-
x=arange(
0,
2*pi,
0.01)
-
line,=ax.plot(x,sin(x))
-
-
def update(i):
-
line.set_ydata(sin(x+i/
10))
-
return line,
-
def init():
-
line.set_ydata(sin(x))
-
return line,
-
-
ani=animation.FuncAnimation(fig=fig,func=update,frames=
100,init_func=init,interval=
20,blit=
False)
-
plt.show()
fig=plt.figure()表示为当前这个画布命名为fig
ax=plt.subplot()或ax=fig.add_subplot()表示将当前画布进行分割,默认分割成1行1列,ax在第一个画布。
plot()函数的返回值是一个列表,列表中只有一个元素,‘line,’表示取列表中的第一个值。‘line,’这种形式只能用于序列长度为1的情况下,其他情况会报错,请看下面的例子:
-
>>>
#例一
-
>>> list1=[
1]
-
>>> a1=list1
#a1为一个列表
-
>>> a2,=list1
#a2为列表中的元素
-
>>> a1
-
[
1]
-
>>> a2
-
1
-
-
>>>
#例二
-
>>> list2=[
1,
2]
-
>>> a,b=list2
-
>>> a
-
1
-
>>> b
-
2
-
>>> e,=list2
-
Traceback (most recent call last):
-
File
"
" , line
1,
in
-
e,=list2
-
ValueError: too many values to unpack (expected
1)
line,=ax.plot(x,sin(x))这个语句相当于:line=ax.plot(x,sin(x)),line=line[0]。这样line就表示这个2D函数线,可以通过line.set_ydata()和line.set_xdata()来修改原来定义的这个函数。例如:
-
import matplotlib.pyplot
as plt
-
from numpy
import *
-
x=linspace(
0,
3)
-
y=x**
3
-
plt.xlim(
0,
3)
-
plt.ylim(
0,
2)
-
line=plt.plot(x,y)
-
line[
0].set_xdata(y)
#修改自变量x
-
line[
0].set_ydata(x)
#修改y值
-
plt.show()
运行结果如下:
1.fig:绘制动画的画布
2.func:动画函数
3.frams:动画长度,一次循环包含的帧数,在函数运行时,其值会传给动画函数update(i)的形参i
4.init_func:动画的起始状态
5.interval:更新频率,interval=20表示每隔20ms从头来一次
6.blit:是否更新整张图,False表示更新整张图,True表示只更新有变化的点。mac用户请使blit=False。
原文链接:https://blog.csdn.net/beautiful77moon/article/details/97559622