matplotlib画动态轨迹图

参考https://blog.csdn.net/suzyu12345/article/details/78338091

函数from matplotlib.animation import FuncAnimation

anim = animation.funcanimation(fig, animate, init_func=init, frames=100, interval=20, blit=true)
# fig: 是我们创建的画布
# animat: 是重点,是我们每个时刻要更新图形对象的函数,返回值和init_func相同
# init_func: 初始化函数,其返回值就是每次都要更新的对象,
#    告诉FuncAnimation在不同时刻要更新哪些图形对象
# frames: 相当于时刻t,要模拟多少帧图画,不同时刻的t相当于animat的参数
# interval: 刷新频率,毫秒
# blit: blit是一个非常重要的关键字,它告诉动画只重绘修改的部分,结合上面保存的时间,
#    blit=true会使动画显示得会非常非常快

主要参数:fig, animat, frames, interval
fig:画布
animat:更新函数,参数为frames的迭代
frames:总共多少帧
interval:每帧间的间隔,单位为毫秒,以30Hz为例,interval就为33


更新函数

def animate(i):
    # 接着,构造自定义动画函数animate,用来更新每一帧上各个x对应的y坐标值,参数表示第i帧
    # plt.cla() 这个函数很有用,先记着它
    data = [[x,y] for x,y in zip(x1,y1)]
    sca1.set_offsets(data1)  # 散点图
    label = 'timestep {0}'.format(i)
    ax1.set_xlabel(label)
    return sca1

以更新散点图为例,散点图的重置函数为set_offsets(data),data格式类似[[x1,x2,x3], [y1,y2,y3]]
由于我们的x,y都是准备好的,可以直接读取

将图像设置为背景

1、读入图像
img = plt.imread('test.png')
2、将图像设置为背景(即显示图像)
ax.imshow(img)
3、画散点图

保存(gif or mp4)

anim.save('a.gif',writer='pillow',fps=2)
anim.save('a.mp4',writer='ffmpeg',fps=30)
pillow是matplotlib自带的,而ffmpeg需要安装

conda config --add channels conda-forge
conda install ffmpeg

fps是帧率,其实这里保存的时候就已经跟前面的interval参数没什么关系了,interval其实可以随便设置


补充知识:

动态大小的散点图

sca = ax.scatter(x,y,s,c)
s设置点的面积,一般为m**2
c设置点的颜色

返回的sca为PathCollection类型,查询matplotlib文档

https://matplotlib.org/3.1.1/api/collections_api.html#matplotlib.collections.PathCollection

可得其重新设置面积的方法为:
sca.set_sizes([area])
重新设置坐标的方法为
sca.set_offsets(offsets)

动态颜色的线段

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值