Hi,

I managed to figure this out. I need to pass an init function to
FuncAnimation. Quoting from the MatPlotLib API documentation:

*init_func* is a function used to draw a clear frame. If not given, the
results of drawing from the first item in the frames sequence will be used.

So just in case someone has the same problem, here's the correct code:

import matplotlib
import numpy as np
from matplotlib.lines import Line2D
import matplotlib.pyplot as plt
import matplotlib.animation as animation

class Scope:
    def __init__(self, ax, maxt=10, dt=1):
        self.ax = ax
        self.dt = dt
        self.maxt = maxt
        self.tdata = [0]
        self.ydata = [0]
        self.line = Line2D(self.tdata, self.ydata, marker='o')
        self.ax.add_line(self.line)
        self.ax.set_ylim(0, 200)
        self.ax.set_xlim(0, self.maxt)
        self.ax.set_xlabel("Time(s)")
        self.ax.set_ylabel("Jitter Buffer Size(ms)",
color=self.line.get_color())

    def init(self):
        self.line.set_data([], [])
        return self.line,

    def update(self, y):
        lastt = self.tdata[-1]
        if lastt == self.tdata[0] + self.maxt: # reset the arrays
            self.tdata = [self.tdata[-1]]
            self.ydata = [self.ydata[-1]]
            self.ax.set_xlim(self.tdata[0], self.tdata[0] + self.maxt)
            self.ax.figure.canvas.draw()

        t = self.tdata[-1] + self.dt
        self.tdata.append(t)
        self.ydata.append(y)
        self.line.set_data(self.tdata, self.ydata)
        return self.line,

def emitter():
    while True:
        yield np.random.randint(0,200)

fig = plt.figure()
ax = fig.add_subplot(111)
scope = Scope(ax)

# pass a generator in "emitter" to produce data for the update func
ani = animation.FuncAnimation(fig, scope.update, emitter, interval=1000,
blit=True, init_func=scope.init)

plt.show()
Best Regards,
Clare.
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to