qcustomplot绘制动态曲线_matplotlib库:动态图

1.动态图简介

动态图主要有.gif、.flv、.swf等格式,这里主要绘制.gif格式的动态图片,这是一种无声的动态图片。它可以方便地嵌入到PPT中,在演讲时使我们的PPT更加炫酷。

2.核心函数及参数介绍

from matplotlib.animation import FuncAnimationFuncAnimation(fig,func,frames,init_func,interval)参数:fig--绘制图形的画布;func--不断生成新的数据的函数,用来更新图形;frames--不断向func函数提供数据,可缺省,如果缺省则默认不断生成整数;init_func--设置初始图形的函数,可缺省;interval--图形更新的时间间隔,单位是ms,设置较小的值可使图形快速更新。

fig为画布对象,可通过subplots函数或者figure函数生成,frames为可迭代对象,该参数每次向func函数中传入一个数据,因此func函数中第一个参数必须是frame来接收数据,即使func函数不需要利用frames中的数据,也必须在func函数中声明该参数。

3.曲线动态图实例展示

这里要绘制的是正弦函数生成的数据,即绘制正弦曲线在一个周期内的动态图。

import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.animation import FuncAnimationfig, ax = plt.subplots()xdata, ydata = [], []ln, = plt.plot([], [], color='red')def init():    ax.set_xlim(0, 2*np.pi)    ax.set_ylim(-1, 1)    ax.set_xlabel('横坐标', fontproperties='STSong')    ax.set_ylabel('纵坐标', fontproperties='STSong')    ax.yaxis.set_major_locator(plt.MultipleLocator(0.5))    return ln,def update(frame):    xdata.append(frame)    ydata.append(np.sin(frame))    ln.set_data(xdata, ydata)    return ln,ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 100),interval=20,                    init_func=init)plt.show()# gif格式图片保存,需要提前安装ImageMagick,否则在保存时会报错# ani.save('sin.gif', writer='imagemagick')
5b31155157829a43ecdaba17cfd6e9ac.gif

上述代码结果图

4.模拟分子运动动态图

布朗运动表明,分子在永不停息地做无规则运动,我们近似模拟无规则运动的分子的动态图。

import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.animation import FuncAnimationfig = plt.figure()x_data, y_data = np.random.random(50), np.random.random(50)sca = plt.scatter(x_data, y_data, s=200, c=range(50), alpha=0.8)plt.xlim([0, 1])plt.ylim([0, 1])plt.xticks([])plt.yticks([])def update(frame):    data_x = np.random.random(50)    data_y = np.random.random(50)    data = np.array([data_x, data_y]).T    sca.set_offsets(data)    return scaanim = FuncAnimation(fig, update, interval=500)plt.show()# gif格式图片的保存# anim.save('molecule.gif', writer='imagemagick')
42060470a954a602408c57c0242af166.gif

上述代码结果图


参考资料

https://matplotlib.org/api/_as_gen/matplotlib.animation.FuncAnimation.html#matplotlib.animation.FuncAnimation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值