Mathematica: two synchronous animations

1. Sep 14, 2011

MartinV

Hello everyone.

Using ListLinePlot and ListAnimate I have made an animation with a hundred frames or so. Also, I have an animated graph corresponding to that animation, plotting certain values. For my presentation, I would like to show the audience these two animations and for that reason I need these two animations to move in tandem. Is there a way to get two animations to be controlled by a single slider because I would need to stop the animation and manually control it in the interesting area.

Martin

2. Sep 14, 2011

Staff: Mentor

There are two ways I am aware of to do this. The first is using Grid inside Manipulate:

Manipulate[
Grid[{{Plot[Sin[f x], {x, -3, 3},
PlotRange -> {-1, 1}]}, {Plot[Cos[f x], {x, -3, 3},
PlotRange -> {-1, 1}]}}], {f, 0, 10}]

The second is to use a Manipulate together with a Dynamic:

Manipulate[F = f;
Plot[Sin[f x], {x, -3, 3}, PlotRange -> {-1, 1}], {f, 0, 10}]

Dynamic[Plot[Cos[F x], {x, -3, 3}, PlotRange -> {-1, 1}]]

3. Sep 14, 2011

MartinV

This looks great. I will try it immediately. Thank you so much!

4. Sep 14, 2011

MartinV

Hm. For whatever reason the result turns to red, as if something is wrong.

I make the first animation with ListAnimate[graphtable2], where graphtable2 is defined:
graphtable2 = Table[myplot1[j], {j, 1, M}], where myplot1 is defined:
myplot1[j] = ListLinePlot[{P[j], e[j], f[j], g[j]},...].

The other is a graph which plots the Table called Final, then adds red points to the current value, depending on the slider:

Manipulate[
Block[{spl = ListLinePlot[Final, PlotRange -> {...}]},
Show[spl, Graphics[{Red, PointSize[.02], Point[{Final[[j, 1]], Final[[j, 2]]}]}]]], {j, 1, M}]

As far as I can see, by putting these two in a Grid, then wrapping a Manipulate around it should work. What am I missing?

5. Sep 15, 2011

Staff: Mentor

What is the error message?

Check and see if the code I sent runs correctly without modification. If it doesn't then what version are you using? If it does then try plotting your graphs outside of a manipulate with a fixed value for the input.

6. Sep 15, 2011

MartinV

The code you send, Dale, works fine. I get two graphs and they both respond to the slider. It's my own that is having problems.

I think the problem may be that your graphs are both defined in the same way while my animations are formed differently. The one called graphtable2 is a Table and the ListAnimate command that I use doesn't specify which parameter the slider is controlling. So putting it all into Manipulate confuses Mathematica. At least that's my assumption. I could be wrong here.

7. Sep 16, 2011

Staff: Mentor

ListAnimate is not going to be useful for your purpose. In order to get synchronous display you need to have both of your plots display the corresponding image for some variable, x. If you just use ListAnimate then there is nothing to control for Manipulate or react on for Dynamic. So you should use something like Show[ graphtable[[x]] ] instead of ListAnimate.