Animations with matplotlib?

John Hunter jdhunter at ace.bsd.uchicago.edu
Wed Nov 26 07:48:31 EST 2003


>>>>> "Pekko" == Pekko Piirola <pekko.piirola at helsinki.fi> writes:

    Pekko> I'm trying to make an animation with matplotlib.  The
    Pekko> problem: whenever I try to rescale or move the plot with
    Pekko> the buttons of plotting window, the animation stops.  My
    Pekko> system is Debian Woody and python-2.3 with matplotlib-0.32.
    Pekko> I'm a total newbie with matplotlib (I installed it
    Pekko> yesterday), so what am I doing wrong?  An example code
    Pekko> below:

Cute code, looks like the beginnings of a digital oscilloscope....

You have discovered a bug.  The Lines2D class goes to great pains to
not plot data outside the view limits and caches a 'clipped' version
of the data set.  This cache should have been cleared by the set_data
method.  Since set_data is rarely used directly, this bug hasn't been
reported before.  It's an easy fix.

In the matplotlib.lines.py module, go to the Line2D.set_data method
(line 74 in the 0.32 release) and replace it with:

    def set_data(self, x, y):
        try: del self._xc, self._yc
        except AttributeError: pass

        self._x = asarray(x, Float)
        self._y = asarray(y, Float)
        if len(self._y)==1 and len(self._x)>1:
            self._y = self._y*ones(self._x.shape, Float)

        self._xsorted = self._is_sorted(self._x)

The important change is the addition of the first two lines, which
delete the cached instances of the clipped data.

Thanks for the bug report!
John Hunter





More information about the Python-list mailing list