matplotlib绘制动画

最近学习matplotlib绘制动画,然后加入到pyqt里显示。今天学了如何创建动态图形,特保存方便以后查阅。第一个案例是要不停显示0-360度的正弦图形。首先要导入相关的图库

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation
import matplotlib.axes._axes as axes # 加入这行代码是为了调用方便显示
fig,ax=plt.subplots()#type:axes.Axes 
#这样后面再用ax.XXX就会提示

完整代码


fig,ax=plt.subplots()#type:axes.Axes

x=np.arange(0,2*np.pi,0.01)
line,=ax.plot(x,np.sin(x))  #这里的逗号不能漏掉

def animate(i):
    line.set_ydata(np.sin(x+i/10))
    return line,
def init():
   line.set_ydata(np.sin(x))
   return line,


ani=animation.FuncAnimation(fig=fig,func=animate,frames=50,init_func=init,interval=50,blit=True)
plt.show()

案例二:

        绘制一个动态的圆,半径从0变到80,同样函数返回的对象后面逗号不能漏掉。

ax.set_xlim(0,150)

ax.set_ylim(0,150)

ax.set_aspect('equal','box')



fig,ax=plt.subplots()#type:axes.Axes
ax.set_xlim(0,150)
ax.set_ylim(0,150)
ax.set_aspect('equal','box')

def draw_cirl(i):
    cirle=plt.Circle((75,75),i)
    ax.add_patch(cirle)
    return ax.add_patch(cirle),  #要返回这个对象,注意逗号不能丢
def init():
    cirle = plt.Circle((75, 75), 40)
    ax.add_patch(cirle)
    return ax.add_patch(cirle),#要返回这个对象,注意逗号不能丢

       

案例三,把动画保存为GIF动画

fig=plt.figure()
ax=plt.subplot()#type:axes.Axes
# ax.set_xlim(0,150)#画圆时启用
# ax.set_ylim(0,150)

ax.set_aspect('equal','box')

def update(i):
    # circle=plt.Circle((75,75),i*0.25)#画圆
    # ax.add_patch(circle)#添加路径

    ax.scatter(i,i)#画点图
    # ax.bar(i,i)#画条形图
#核心代码
ani=animation.FuncAnimation(fig,
                            update,
                            frames=80,#动画总共有多少帧,传递给i
                            interval=1000,#每两张图片的间隔时间
                            blit=False)#是否所以的点


ani.save('cir.gif',fps=24,writer='pillow')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值