Simple animation test

Hi,

I am trying to do a simple animation examples similar to the one here:

http://www.scipy.org/Cookbook/Matplotlib/Animations#head-e50abcca4333d3d76b3f2bb66ef00f15c6b4dbbc

But it does not work. I have tried with different backends, plain
python, within ipython. I am using ipython 0.10 and matplotlib 0.99.3
from EPD. I have used this approach in the past, but no luck this
time. If I add a show() early on, the first plot shows OK, but it
sits and waits until I close the plot window before moving on. Any
ideas?

Cheers,

Brian

···

--
Brian E. Granger, Ph.D.
Assistant Professor of Physics
Cal Poly State University, San Luis Obispo
bgranger@...882...
ellisonbg@...149...

If you are running mpl from the development tree on github, I suggest
you use the new animations API, which hides much of the complexity.
See

  https://github.com/matplotlib/matplotlib/tree/master/examples/animation

If you are running a released mpl, you can simply drop the
animation.py file into your PYTHONPATH and use it directly

  https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/animation.py

Hope this helps,
JDH

···

On Wed, Mar 2, 2011 at 12:27 AM, Brian Granger <ellisonbg@...149...> wrote:

Hi,

I am trying to do a simple animation examples similar to the one here:

http://www.scipy.org/Cookbook/Matplotlib/Animations#head-e50abcca4333d3d76b3f2bb66ef00f15c6b4dbbc

But it does not work. I have tried with different backends, plain
python, within ipython. I am using ipython 0.10 and matplotlib 0.99.3
from EPD. I have used this approach in the past, but no luck this
time. If I add a show() early on, the first plot shows OK, but it
sits and waits until I close the plot window before moving on. Any
ideas?

Animations can be a very fickle thing in matplotlib. Everything has to be perfect for it to work properly. Are you able to run that first example on that page? Can you include a self-contained version of your code that reproduces your problem?

Ben Root

···

On Wed, Mar 2, 2011 at 12:27 AM, Brian Granger <ellisonbg@…322…9…> wrote:

Hi,

I am trying to do a simple animation examples similar to the one here:

http://www.scipy.org/Cookbook/Matplotlib/Animations#head-e50abcca4333d3d76b3f2bb66ef00f15c6b4dbbc

But it does not work. I have tried with different backends, plain

python, within ipython. I am using ipython 0.10 and matplotlib 0.99.3

from EPD. I have used this approach in the past, but no luck this

time. If I add a show() early on, the first plot shows OK, but it

sits and waits until I close the plot window before moving on. Any

ideas?

Cheers,

Brian

I don’t think that is necessarily true. If I remember correctly, Ryan May introduced some other API changes (I think they made it to the 1.0.x branch) in order to facilitate his animations.

Ben Root

···

On Wed, Mar 2, 2011 at 7:44 AM, John Hunter <jdh2358@…746…49…> wrote:

On Wed, Mar 2, 2011 at 12:27 AM, Brian Granger <ellisonbg@…149…> wrote:

Hi,

I am trying to do a simple animation examples similar to the one here:

http://www.scipy.org/Cookbook/Matplotlib/Animations#head-e50abcca4333d3d76b3f2bb66ef00f15c6b4dbbc

But it does not work. I have tried with different backends, plain

python, within ipython. I am using ipython 0.10 and matplotlib 0.99.3

from EPD. I have used this approach in the past, but no luck this

time. If I add a show() early on, the first plot shows OK, but it

sits and waits until I close the plot window before moving on. Any

ideas?

If you are running mpl from the development tree on github, I suggest

you use the new animations API, which hides much of the complexity.

See

https://github.com/matplotlib/matplotlib/tree/master/examples/animation

If you are running a released mpl, you can simply drop the

animation.py file into your PYTHONPATH and use it directly

https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/animation.py

Hope this helps,

JDH

Is the old method (just using draw/set_xdata, etc.) not supported? I
am working with a student and I want to keep is dead simple.

Brian

···

On Wed, Mar 2, 2011 at 10:22 AM, Benjamin Root <ben.root@...553...> wrote:

On Wed, Mar 2, 2011 at 7:44 AM, John Hunter <jdh2358@...149...> wrote:

On Wed, Mar 2, 2011 at 12:27 AM, Brian Granger <ellisonbg@...149...> >> wrote:
> Hi,
>
> I am trying to do a simple animation examples similar to the one here:
>
>
> http://www.scipy.org/Cookbook/Matplotlib/Animations#head-e50abcca4333d3d76b3f2bb66ef00f15c6b4dbbc
>
> But it does not work. I have tried with different backends, plain
> python, within ipython. I am using ipython 0.10 and matplotlib 0.99.3
> from EPD. I have used this approach in the past, but no luck this
> time. If I add a show() early on, the first plot shows OK, but it
> sits and waits until I close the plot window before moving on. Any
> ideas?

If you are running mpl from the development tree on github, I suggest
you use the new animations API, which hides much of the complexity.
See

https://github.com/matplotlib/matplotlib/tree/master/examples/animation

If you are running a released mpl, you can simply drop the
animation.py file into your PYTHONPATH and use it directly

https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/animation.py

Hope this helps,
JDH

I don't think that is necessarily true. If I remember correctly, Ryan May
introduced some other API changes (I think they made it to the 1.0.x branch)
in order to facilitate his animations.

Ben Root

--
Brian E. Granger, Ph.D.
Assistant Professor of Physics
Cal Poly State University, San Luis Obispo
bgranger@...882...
ellisonbg@...149...

Those functions are still supported. I can run the example on that page without issues using the development version of mpl, GTKAgg, and python 2.6. There might be some other possibilities to consider. For example, if you are working in the pylab mode and you have multiple figures and/or axes, the draw() command might be going to the wrong figure because draw() operates on whichever figure would be returned by gcf() (I believe).

Ben Root

···

On Wed, Mar 2, 2011 at 12:43 PM, Brian Granger <ellisonbg@…322…9…> wrote:

Is the old method (just using draw/set_xdata, etc.) not supported? I

am working with a student and I want to keep is dead simple.

Brian

Is the old method (just using draw/set_xdata, etc.) not supported? I
am working with a student and I want to keep is dead simple.

The old method is subject to the problems you're encountering now
because you're working outside the GUI's event loop. The new method
was created to be "dead simple" and yet work reliably. If there's some
kind of unintuitive/hard part of the new animation API, I'd love to
know about it.

Ryan

···

On Wed, Mar 2, 2011 at 12:43 PM, Brian Granger <ellisonbg@...149...> wrote:

Brian

On Wed, Mar 2, 2011 at 10:22 AM, Benjamin Root <ben.root@...553...> wrote:

On Wed, Mar 2, 2011 at 7:44 AM, John Hunter <jdh2358@...149...> wrote:

On Wed, Mar 2, 2011 at 12:27 AM, Brian Granger <ellisonbg@...149...> >>> wrote:
> Hi,
>
> I am trying to do a simple animation examples similar to the one here:
>
>
> http://www.scipy.org/Cookbook/Matplotlib/Animations#head-e50abcca4333d3d76b3f2bb66ef00f15c6b4dbbc
>
> But it does not work. I have tried with different backends, plain
> python, within ipython. I am using ipython 0.10 and matplotlib 0.99.3
> from EPD. I have used this approach in the past, but no luck this
> time. If I add a show() early on, the first plot shows OK, but it
> sits and waits until I close the plot window before moving on. Any
> ideas?

If you are running mpl from the development tree on github, I suggest
you use the new animations API, which hides much of the complexity.
See

https://github.com/matplotlib/matplotlib/tree/master/examples/animation

If you are running a released mpl, you can simply drop the
animation.py file into your PYTHONPATH and use it directly

https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/animation.py

Hope this helps,
JDH

I don't think that is necessarily true. If I remember correctly, Ryan May
introduced some other API changes (I think they made it to the 1.0.x branch)
in order to facilitate his animations.

Ben Root

--
Brian E. Granger, Ph.D.
Assistant Professor of Physics
Cal Poly State University, San Luis Obispo
bgranger@...882...
ellisonbg@...149...

------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in
Real-Time with Splunk. Collect, index and harness all the fast moving IT data
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business
insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
matplotlib-devel List Signup and Options

--
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma

Is the old method (just using draw/set_xdata, etc.) not supported? I
am working with a student and I want to keep is dead simple.

The old method is subject to the problems you're encountering now
because you're working outside the GUI's event loop. The new method
was created to be "dead simple" and yet work reliably. If there's some
kind of unintuitive/hard part of the new animation API, I'd love to
know about it.

The main issue I have is that I am working with undergraduate students
who have no experience installing things from scratch. In this
context I am stuck with whatever is in EPD. Currently EPD is at
1.0.1, which does not have animation. Will this file "just work" with
1.0.1 or 0.99.3? I don't have any aversion to using animation.py, I
just need to be able to use it within a stock recent EPD.

Cheers,

Brian

···

Ryan

Brian

On Wed, Mar 2, 2011 at 10:22 AM, Benjamin Root <ben.root@...553...> wrote:

On Wed, Mar 2, 2011 at 7:44 AM, John Hunter <jdh2358@...149...> wrote:

On Wed, Mar 2, 2011 at 12:27 AM, Brian Granger <ellisonbg@...149...> >>>> wrote:
> Hi,
>
> I am trying to do a simple animation examples similar to the one here:
>
>
> http://www.scipy.org/Cookbook/Matplotlib/Animations#head-e50abcca4333d3d76b3f2bb66ef00f15c6b4dbbc
>
> But it does not work. I have tried with different backends, plain
> python, within ipython. I am using ipython 0.10 and matplotlib 0.99.3
> from EPD. I have used this approach in the past, but no luck this
> time. If I add a show() early on, the first plot shows OK, but it
> sits and waits until I close the plot window before moving on. Any
> ideas?

If you are running mpl from the development tree on github, I suggest
you use the new animations API, which hides much of the complexity.
See

https://github.com/matplotlib/matplotlib/tree/master/examples/animation

If you are running a released mpl, you can simply drop the
animation.py file into your PYTHONPATH and use it directly

https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/animation.py

Hope this helps,
JDH

I don't think that is necessarily true. If I remember correctly, Ryan May
introduced some other API changes (I think they made it to the 1.0.x branch)
in order to facilitate his animations.

Ben Root

--
Brian E. Granger, Ph.D.
Assistant Professor of Physics
Cal Poly State University, San Luis Obispo
bgranger@...882...
ellisonbg@...149...

------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in
Real-Time with Splunk. Collect, index and harness all the fast moving IT data
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business
insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
matplotlib-devel List Signup and Options

--
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma

--
Brian E. Granger, Ph.D.
Assistant Professor of Physics
Cal Poly State University, San Luis Obispo
bgranger@...882...
ellisonbg@...149...

On Wed, Mar 2, 2011 at 4:43 PM, Brian Granger <ellisonb

The main issue I have is that I am working with undergraduate students
who have no experience installing things from scratch. In this
context I am stuck with whatever is in EPD. Currently EPD is at
1.0.1, which does not have animation. Will this file "just work" with
1.0.1 or 0.99.3? I don't have any aversion to using animation.py, I
just need to be able to use it within a stock recent EPD.

With EPD and mpl 1.0.1, the new API should work if you drop
animation.py into your site-packages, eg as mpl_animation.py,and
import it like

  import mpl_animation as animation

Then later they can just change this to

  import matplotlib.animation as animation

Let us know if you have any troubles with this approach.

I've attached a double pendulum example which is fun, and illustrates
how to animate multiple objects, a line instance for the pendulum and
a text instance for the time counter.

JDH

double_pendulum_animated.py (2.2 KB)

I trust you're going to check in that completely awesome example.

Brian, if you're still adverse to using an external module (I
understand), 1.0.1 does have the new timer infrastructure that will
work with the event loop properly. Here's your example converted to
taht:

from pylab import *

def update_line(line):
    line.set_ydata(sin(x+line.counter/10.0)) # update the data
    line.counter += 1
    draw()
    if line.counter > 200:
        return False

x = arange(0,2*pi,0.01) # x-array
line, = plot(x,sin(x))
line.counter = 0 # Store the counter on the line object

# Get the current figure and get it to create a new timer.
fig = gcf()
timer = fig.canvas.new_timer(interval=50)
timer.add_callback(update_line, line)
timer.start()
show()

Ryan

···

On Wed, Mar 2, 2011 at 4:50 PM, John Hunter <jdh2358@...149...> wrote:

On Wed, Mar 2, 2011 at 4:43 PM, Brian Granger <ellisonb

The main issue I have is that I am working with undergraduate students
who have no experience installing things from scratch. In this
context I am stuck with whatever is in EPD. Currently EPD is at
1.0.1, which does not have animation. Will this file "just work" with
1.0.1 or 0.99.3? I don't have any aversion to using animation.py, I
just need to be able to use it within a stock recent EPD.

With EPD and mpl 1.0.1, the new API should work if you drop
animation.py into your site-packages, eg as mpl_animation.py,and
import it like

import mpl_animation as animation

Then later they can just change this to

import matplotlib.animation as animation

Let us know if you have any troubles with this approach.

I've attached a double pendulum example which is fun, and illustrates
how to animate multiple objects, a line instance for the pendulum and
a text instance for the time counter.

--
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma

BTW, that completely awesome example was just demoed in front of a
standing-room only audience at the SIAM CSE 11 meeting :slight_smile: The
matplotlib talk (delivered by yours truly b/c John couldn't make it)
was very well received, the interest in Python here is remarkable.

Cheers,

f

···

On Wed, Mar 2, 2011 at 3:00 PM, Ryan May <rmay31@...149...> wrote:

I trust you're going to check in that completely awesome example.