详解如何使用详解如何使用Python绘制动图(一)绘制动图(一)|解析解析FuncAnimation接接
口用法以及实践口用法以及实践
在这篇文章中,我们将熟悉并使用Matplotlib提供的animation模块模块,绘制动态图像。
我们将绘制一个简单的例子:在正弦函数上移动的切线。
文章目录文章目录一. FuncAnimation接口与绘图思路1. FuncAnimation接口2. 绘图思路(1). 绘制初始的静态图形(2). 在func函数中更新
数据以获得动态效果(3). 调用FuncAnimation接口二. 实践:绘制正弦曲线上变化的切线与切点三. 完整代码
一一. FuncAnimation接口与绘图思路接口与绘图思路
1. FuncAnimation接口接口
FuncAnimation是Matplotlib库为我们提供的用于绘制动态图像的接口,其中包含如下参数:
fig:画布对象,由创建画布时的返回得到,即fig = plt.figure()
frames:指定动图的帧数,但这个参数类型必须是可迭代的列表等。每次调用func函数对图像进行更新时,接口将自动向func
函数提供此时的帧数num,这使得更新数据十分方便。
func:用于更新图片从而产生动态效果的调用函数,在编写时通常会用到set_data等类似的方法,其返回值是一个元素为被更元素为被更
新的图形对象的列表新的图形对象的列表。同时,func可以接受帧数参数num,用来更新每帧图像。具体内容我们将在示例中看到。
interval:更新频率,单位是毫秒。
上面这些参数的用法我们会在具体的实践中更清楚的看到。
2. 绘图思路绘图思路
(1). 绘制初始的静态图形绘制初始的静态图形
在绘制动态效果前,我们需要一个初始的静态的图片,例如在绘制正弦函数上变化的切线时,我们的初始图片是一条正弦函数
曲线、在曲线第一个点上的切线以及对应的切点。在后续的动图中,切点与切线是变化的,也就是说,我们需要操作切点与切
线这两个对象。
我们使用plot接口来绘制初始的正弦曲线、切点与切线,而实现后续的动态效果时,我们只需要更新绘制切点与切线时的数据
即可。这就告诉我们,我们需要得到切点与切线的对象:
crave_ani = plt.plot(x,y,'red',alpha=0.5)[0] #正弦曲线
tangent_ani = plt.plot(xs,ys,c='blue',alpha=0.8)[0] #切线
point_ani = plt.plot(0,0,'r',alpha=0.4,marker='o')[0] #切点
(由于这只是示例,我们先不需要搞清楚绘制切线的数据是怎么得到的。)
我们用crave_ani、tanget_ani和point_ani这三个变量来表示从plot接口中返回的三个对象。值得注意的是,plot接口可以同
时绘制多个对象(例如两条曲线同时绘制时),所以它的返回是一个列表,而我们需要使用列表的方式来获得其中的元素。这
评论0