如何使用matplotlib显示两个动画图

时间:2019-03-30 23:29:05

标签: python matplotlib

我想用python中的matplotlib为两个不同的情节制作动画,但是一切进展都不顺利。

我从一个情节开始,那很好。动画很容易。但是现在我想添加第二个动画线条图,但我很挣扎。我想在第二个情节上画三行。我需要一个带有两个子图的人物吗?还是我需要有两个图形,并有一个子图来代表第二个图形上的三行?

我认为我需要创建两个动画并引入子图:

fig, axs = plt.subplots(1,2)
animation1 = FuncAnimation(fig, self.animate_first, numframes, repeat = False, interval = 10, blit = True)
animation2 = FuncAnimation(fig, self.animate_linegraph, numframes, repeat = False, interval = 10, blit = True)

但是,如果子图返回一个图形对象,并且这是FuncAnimation的第一个参数,那么动画回调函数应该做什么?当我只有一个图要显示时,我从动画函数返回了补丁列表。但是当我有两个情节要更新时。我不确定该怎么办。

任何指针都非常感谢。哦(如果不太明显的话:)),我是python的新手。

谢谢, 保罗

1 个答案:

答案 0 :(得分:0)

过去,我已经按照以下方式实现了子图动画:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

# Set up formatting for the movie files
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)

# initialization function: plot the background of each frame
def init():
    fig = plt.figure()
    ax2 = fig.add_subplot(2, 1, 1)
    ax3 = fig.add_subplot(2, 1, 2)
    title = plt.title('')
    title.set_text('')
    return fig,ax2,ax3,title

# animation function.  This is called sequentially
def animate(i):

    a = ax2.pcolor(x,y,data)

    b = ax3.pcolor(x2,y2,data2)

    main_title.set_text('Main Title')
    title2.set_text('Sub title 1')
    title3.set_text('Sub title 2')

    return main_title, title2, title3, ax2, ax3

# call the animator.
fig = plt.figure()
ax2 = fig.add_subplot(2, 1, 1)
ax3 = fig.add_subplot(2, 1, 2)
title2 = ax2.set_title('')
title3 = ax3.set_title('')
main_title = fig.suptitle('')


anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=101, interval=250, blit=False)


anim.save('file.mp4', writer=writer)
plt.close()

不确定这是否有帮助,主要是从我一段时间未使用的旧脚本中复制并粘贴...