[Pythonmac-SIG] Matplotlib-animation problem

Thomas Robitaille thomas.robitaille at gmail.com
Wed Sep 5 21:51:50 CEST 2012


It's a known problem with the MacOS X backend:

http://matplotlib.1069221.n5.nabble.com/Animation-example-error-on-Mac-after-installation-td26960.html

Try changing backend - for example, add

import matplotlib
matplotlib.use('TkAgg')

just *before*

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

This works for me.

Cheers,
Tom

On 4 September 2012 20:19, William R. Wing (Bill Wing) <wrw at mac.com> wrote:
> I'm running Mac OS-X 10.8.1, with python 2.7.3, numpy 1.8.0, matplotlib 1.2,
> and wxPython 2.9.3.1 (although wx isn't involved here, at least I don't
> think so).  I'm running on a dual-quad processor Xeon Mac Pro.
>
> I decided to learn something about animated matplotlib graphics, so started
> to look at the examples in
> http://matplotlib.sourceforge.net/examples/animation/...
>
> I consistently run into a problem, illustrated below.  Starting from the
> animate_decay.py code, copied and pasted into an editor as here:
>
> #!/usr/bin/env python
> """
>  http://matplotlib.sourceforge.net/examples/animation/animate_decay.html
> """
>
> import numpy as np
> import matplotlib.pyplot as plt
> import matplotlib.animation as animation
>
> def data_gen():
>  t = data_gen.t
>  cnt = 0
>  while cnt < 1000:
>      cnt+=1
>      t += 0.05
>      yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
> data_gen.t = 0
>
> fig = plt.figure()
> ax = fig.add_subplot(111)
> line, = ax.plot([], [], lw=2)
> ax.set_ylim(-1.1, 1.1)
> ax.set_xlim(0, 5)
> ax.grid()
> xdata, ydata = [], []
> def run(data):
>  # update the data
>  t,y = data
>  xdata.append(t)
>  ydata.append(y)
>  xmin, xmax = ax.get_xlim()
>
>  if t >= xmax:
>      ax.set_xlim(xmin, 2*xmax)
>      ax.figure.canvas.draw()
>  line.set_data(xdata, ydata)
>
>  return line,
>
> ani = animation.FuncAnimation(fig, run, data_gen, blit=True, interval=10,
>  repeat=False)
> plt.show()
>
>
> If I attempt to run this script (or any of several others), I get:
>
> StraylightPro:Matplotlib_stuff wrw$ ./animate_decay.py
> Traceback (most recent call last):
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/backend_bases.py",
> line 1117, in _on_timer
>  ret = func(*args, **kwargs)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 763, in _step
>  still_going = Animation._step(self, *args)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 625, in _step
>  self._draw_next_frame(framedata, self._blit)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 645, in _draw_next_frame
>  self._post_draw(framedata, blit)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 668, in _post_draw
>  self._blit_draw(self._drawn_artists, self._blit_cache)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 682, in _blit_draw
>  bg_cache[a.axes] = a.figure.canvas.copy_from_bbox(a.axes.bbox)
> AttributeError: 'FigureCanvasMac' object has no attribute 'copy_from_bbox'
> Traceback (most recent call last):
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/backend_bases.py",
> line 1117, in _on_timer
>  ret = func(*args, **kwargs)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 763, in _step
>  still_going = Animation._step(self, *args)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 625, in _step
>  self._draw_next_frame(framedata, self._blit)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 643, in _draw_next_frame
>  self._pre_draw(framedata, blit)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 656, in _pre_draw
>  self._blit_clear(self._drawn_artists, self._blit_cache)
> File
> "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/animation.py",
> line 696, in _blit_clear
>  a.figure.canvas.restore_region(bg_cache[a])
> AttributeError: 'FigureCanvasMac' object has no attribute 'restore_region'
>
>
> …and the 'restore-region' error sequence then repeats endlessly.
>
> I'm hoping this is all caused by my not quite having the right library
> installed someplace along the line.  If anyone could point it out, I'd sure
> appreciate it.
>
> Thanks,
> Bill
>
> _______________________________________________
> Pythonmac-SIG maillist  -  Pythonmac-SIG at python.org
> http://mail.python.org/mailman/listinfo/pythonmac-sig
> unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG
>


More information about the Pythonmac-SIG mailing list