使用matplotlib的动画子图

使用matplotlib的动画子图,第1张

使用matplotlib的动画子图

基本上,您可以使用与示例中的结构非常相似的结构。您只需要创建一个附加轴(子图)和第二条线对象:

import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationdef data_gen():    t = data_gen.t    cnt = 0    while cnt < 1000:        cnt+=1        t += 0.05        y1 = np.sin(2*np.pi*t) * np.exp(-t/10.)        y2 = np.cos(2*np.pi*t) * np.exp(-t/10.)        # adapted the data generator to yield both sin and cos        yield t, y1, y2data_gen.t = 0# create a figure with two subplotsfig, (ax1, ax2) = plt.subplots(2,1)# intialize two line objects (one in each axes)line1, = ax1.plot([], [], lw=2)line2, = ax2.plot([], [], lw=2, color='r')line = [line1, line2]# the same axes initalizations as before (just now we do it for both of them)for ax in [ax1, ax2]:    ax.set_ylim(-1.1, 1.1)    ax.set_xlim(0, 5)    ax.grid()# initialize the data arrays xdata, y1data, y2data = [], [], []def run(data):    # update the data    t, y1, y2 = data    xdata.append(t)    y1data.append(y1)    y2data.append(y2)    # axis limits checking. Same as before, just for both axes    for ax in [ax1, ax2]:        xmin, xmax = ax.get_xlim()        if t >= xmax: ax.set_xlim(xmin, 2*xmax) ax.figure.canvas.draw()    # update the data of both line objects    line[0].set_data(xdata, y1data)    line[1].set_data(xdata, y2data)    return lineani = animation.FuncAnimation(fig, run, data_gen, blit=True, interval=10,    repeat=False)plt.show()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5644263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存