网站制作旅行社,西安建设工程网站,seo与网站建设的关联,wordpress logo更换本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下#xff1a;matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例#xff1a;第一个例子使用generator#xff0c;每隔两秒#xff0c;就运行函数data_gen#xff1a;# -*…本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例第一个例子使用generator每隔两秒就运行函数data_gen# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationfig plt.figure()axes1 fig.add_subplot(111)line, axes1.plot(np.random.rand(10))#因为update的参数是调用函数data_gen,#所以第一个默认参数不能是framenumdef update(data):line.set_ydata(data)return line,# 每次生成10个随机数据def data_gen():while True:yield np.random.rand(10)ani animation.FuncAnimation(fig, update, data_gen, interval2*1000)plt.show()第二个例子使用list(metric)每次从metric中取一行数据作为参数送入update中import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationstart [1, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0]metric [[0.03, 0.86, 0.65, 0.34, 0.34, 0.02, 0.22, 0.74, 0.66, 0.65],[0.43, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0.55],[0.66, 0.75, 0.01, 0.94, 0.72, 0.77, 0.20, 0.66, 0.81, 0.52]]fig plt.figure()window fig.add_subplot(111)line, window.plot(start)#如果是参数是list,则默认每次取list中的一个元素,#即metric[0],metric[1],...def update(data):line.set_ydata(data)return line,ani animation.FuncAnimation(fig, update, metric, interval2*1000)plt.show()第三个例子import numpy as npfrom matplotlib import pyplot as pltfrom matplotlib import animation# First set up the figure, the axis, and the plot element we want to animatefig plt.figure()ax plt.axes(xlim(0, 2), ylim(-2, 2))line, ax.plot([], [], lw2)# initialization function: plot the background of each framedef init():line.set_data([], [])return line,# animation function. This is called sequentially# note: i is framenumberdef animate(i):x np.linspace(0, 2, 1000)y np.sin(2 * np.pi * (x - 0.01 * i))line.set_data(x, y)return line,# call the animator. blitTrue means only re-draw the parts that have changed.anim animation.FuncAnimation(fig, animate, init_funcinit,frames200, interval20, blitTrue)#anim.save(basic_animation.mp4, fps30, extra_args[-vcodec, libx264])plt.show()第四个例子:# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animation# 每次产生一个新的坐标点def data_gen():t data_gen.tcnt 0while cnt 1000:cnt1t 0.05yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)data_gen.t 0# 绘图fig, ax plt.subplots()line, ax.plot([], [], lw2)ax.set_ylim(-1.1, 1.1)ax.set_xlim(0, 5)ax.grid()xdata, ydata [], []# 因为run的参数是调用函数data_gen,# 所以第一个参数可以不是framenum:设置line的数据,返回linedef run(data):# update the datat,y dataxdata.append(t)ydata.append(y)xmin, xmax ax.get_xlim()if t xmax:ax.set_xlim(xmin, 2*xmax)ax.figure.canvas.draw()line.set_data(xdata, ydata)return line,# 每隔10秒调用函数run,run的参数为函数data_gen,# 表示图形只更新需要绘制的元素ani animation.FuncAnimation(fig, run, data_gen, blitTrue, interval10,repeatFalse)plt.show()再看下面的例子:# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animation#第一个参数必须为framenumdef update_line(num, data, line):line.set_data(data[...,:num])return line,fig1 plt.figure()data np.random.rand(2, 15)l, plt.plot([], [], r-)plt.xlim(0, 1)plt.ylim(0, 1)plt.xlabel(x)plt.title(test)#framenum从1增加大25后,返回再次从1增加到25,再返回...line_ani animation.FuncAnimation(fig1, update_line, 25,fargs(data, l),interval50, blitTrue)#等同于#line_ani animation.FuncAnimation(fig1, update_line, frames25,fargs(data, l),# interval50, blitTrue)#忽略frames参数,framenum会从1一直增加下去知道无穷#由于frame达到25以后,数据不再改变,所以你会发现到达25以后图形不再变化了#line_ani animation.FuncAnimation(fig1, update_line, fargs(data, l),# interval50, blitTrue)plt.show()希望本文所述对大家的python程序设计有所帮助。如您对本文有疑问或者有任何想说的请点击进行留言回复万千网友为您解惑