'Python function animation for two graphes (displayed after each other)

I have two data sets y1 = vol1 and y2 = vol2 for the same x range (0 to 5000 in steps of 10). I would like to use function animation in order to first animate y1 and after that animate y2 while the graph of y1 remains. This is what I got from combing several examples (incl. this):

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


x = range(0, 5000, 10)
y1 = vol1
y2 = vol2

fig, ax = plt.subplots()
ax.set_xlim(0, 5000)
ax.set_ylim(0, 1000)

l1, = plt.plot([],[],'b-')
l2, = plt.plot([],[],'r-')

def init1():
    return l1,
def init2():
    return l2,

def animate1(i):
    l1.set_data(x[:i],y1[:i])
    return l1,
def animate2(i):
    l2.set_data(x[:i-500],y2[:i-500])
    return l2,

def gen1():
    i = 0
    while(i<500):
        yield i
        i += 1
def gen2():
    j = 500
    while(j<1000):
        yield j
        j += 1

ani1 = FuncAnimation(fig, animate1, gen1, interval=1, save_count=len(x),
                    init_func=init1, blit=True,
                    repeat=False) 
ani2 = FuncAnimation(fig, animate2, gen2, interval=1, save_count=len(x),
                        init_func=init2, blit=True,
                        repeat=False)
    # ani.save('ani.mp4')
plt.show()

My idea was to make two 'counters' gen1 andgen2 but since I have the same x values for both data sets, I tried to compensate that in the animate2 function. But this doesn't work.. Obviously, I'm quite new to python and I appreciate any help.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source