python画卡通_Python动画底纹matplotlib

您需要注意,保存的动画是blit = False时将显示的动画.因此,发生的是所有填充都加到了画布上.

一种解决方案是在添加下一个之前删除前一个(因为set_data之类的内容不直接用于填充).

再次,我们将创建一个填充列表,并实际使用fill_between,而不是我们可以用来删除填充并向其中添加新填充的fill.

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.animation as animation

Gamma=0.0005

q=1.6e-19

m=0.067*9e-31

B=10

Ec=(1.0567e-34)*B/m

fig, ax = plt.subplots()

n = 3 #number of lines

x = np.arange(0, 3.6e-3, 1.7e-5) # x-array, third number is interval here, x is energy

lines = [ax.plot(x, np.e**(-(x-((1.0567e-34)*1*1/m))**2/Gamma**2), zorder=i+3)[0] for i in range(n)]

fills = [ax.fill_between(x,0,(np.e**(-(x-((1.0567e-34)*1*1/m))**2/Gamma**2)), facecolor=lines[i].get_color(), zorder=i+3) for i in range(n)]

def animate(i):

for d, line in enumerate(lines):

p=(d+1)/2.

line.set_ydata(np.e**((-(x-((1.0567e-34)*p*i/m))**2)/Gamma**2))

fills[d].remove()

fills[d] = ax.fill_between(x,0,(np.e**(-(x-((1.0567e-34)*p*i/m))**2/Gamma**2)), facecolor=lines[d].get_color(), zorder=d+3)# update the data

return lines + fills

#Init only required for blitting to give a clean slate.

def init():

for line in lines:

line.set_ydata(np.ma.array(x, mask=True))

return lines

ani = animation.FuncAnimation(fig, animate, np.arange(0, 2.5, .01), init_func=init,

interval=10, blit=True)

#Writer = animation.writers['ffmpeg']

#writer = Writer(fps=20, metadata=dict(artist='Me'), bitrate=1800)

#

#ani.save('QHanimati.mp4', writer=writer)

plt.show()

UCsWn.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值