阅读:97
在matplotlib模块中我们前面学习绘制如折线、柱状、散点、直方图等静态图形。我们都知道在matplotlib模块主要有三层脚本层为用户提供快捷的绘制图形方法,美工层接收到脚本层的命令后将绘制指令发送给后端,后端提供执行绘制操作、事件响应、图形渲染工作。具体的详情可见往期文章如下
在matplotlib模块中,除了以上静态图形的绘制,还提供Animation类支持绘制动态图制作
Python matplotlib 绘制散点图 还不收藏起来_编程简单学的博客-CSDN博客这么详细的Python matplotlib 绘制图形 还不赶紧收藏_编程简单学的博客-CSDN博客Python matplotlib 绘制散点图 还不收藏起来_编程简单学的博客-CSDN博客
这么详细的Python matplotlib底层原理浅析_编程简单Python matplotlib 绘制散点图 还不收藏起来_
python入门到进阶,爬虫数据分析全套资料分享讲解 (#1) ·CHINA
本期,我们对matplotlib.animation绘制动态图方法学习,Let's go~
Animation 是matplotlib模块制作实时动画的动画类,包含三个子类
matplotlib.animation.Animation()是动画类的基类,是不能被使用的。常用的两个类主要animation两个子类
matplotlib.animation.FuncAnimation(fig, func,
frames=None,
init_func=None,
fargs=None,
save_count=None,
* , cache_frame_data=True,
**kwargs)
复制代码
matplotlib.animation.ArtistAnimation(fig,
artists,
*args,
**kwargs)
复制代码
matplotlib 绘制动态图最重要的是要准备好每一帧显示的数据,通常我们使用FuncAnimation可以传入产生连续数字的func方法,因此绘制动态图主要步骤为:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
复制代码
fig,ax = plt.subplots()
复制代码
x = np.arange(0, 2*np.pi, 0.01)
复制代码
line, = ax.plot(x, np.cos(x),color="pink")
复制代码
def update(i):
line.set_ydata(np.cos(x + i / 50))
return line,
复制代码
ani = animation.FuncAnimation(
fig, update, interval=20, blit=True, save_count=50)
复制代码
plt.show()
复制代码
ps:我们需要提前pip install pillow 安装pillow库,否则会提示无法使用
ani.save("movie.gif",writer='pillow')
复制代码
我们使用animation类绘制直方动态图,在绘制的过程中需要注意几点
def drawanimationhist():
fig, ax = plt.subplots()
BINS = np.linspace(-5, 5, 100)
data = np.random.randn(1000)
n, _ = np.histogram(data, BINS)
_, _, bar_container = ax.hist(data, BINS, lw=2,
ec="b", fc="pink")
def update(bar_container):
def animate(frame_number):
data = np.random.randn(1000)
n, _ = np.histogram(data, BINS)
for count, rect in zip(n, bar_container.patches):
rect.set_height(count)
return bar_container.patches
return animate
ax.set_ylim(top=55)
ani = animation.FuncAnimation(fig, update(bar_container), 50,
repeat=False, blit=True)
plt.show()
复制代码
本期,我们对matplotlib模块制作动态图类animation相关方法学习。在绘制动态图过程中,需要定义func方法来更新每一帧所需要的数据。
以上是本期内容,欢迎大佬们点赞评论,下期见~