MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to combine Dynamic graphics in Show?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg105517] Re: [mg105506] How to combine Dynamic graphics in Show?
  • From: "Nasser M. Abbasi" <nma at 12000.org>
  • Date: Sun, 6 Dec 2009 01:31:18 -0500 (EST)
  • References: <200912562619.055940@jfultz2winlap>
  • Reply-to: "Nasser M. Abbasi" <nma at 12000.org>

From: "John Fultz" <jfultz at wolfram.com>


"Show doesn't know how to deal with something that has the head Dynamic."

Thanks for the info. But the above raises the question as to why then was 
the above not told to the user as part of the error message given?

The error message simply said  that it could not combine the graphics. Never 
said why.

"Show::gcomb: "Could not combine the graphics objects in"

but WHY??

That is the biggest problem I have with the Mathematica error messages. If 
the error message where a little helpful, then one would not have to scratch 
their head all the time wondering where is the problem and why. Don't you 
agree?

I went over help for Show again and again, and I do not see anywhere it said 
that. And the examples I saw for Plot which uses a Dynamic was to wrap a 
Plot with Dynamics, do I did that, i.e. to write p=Dynamics at Plot[....].


"if you're going to spend time reading documentation, please make sure to read
(again, if you've already read it before, because it's *very* relevant here) my
post from February of this year...

http://forums.wolfram.com/mathgroup/archive/2009/Feb/msg00424.html
"

I've just printed it out and will read it carefully.

"...which I've referenced several times on this list.  So the solution is to wrap
the Dynamic around Show *and* to remove the Dynamic from inside of Show."

Good to know, I'll add this to my Mathematica cheat sheat.

But again, this I think should be documented in the help for show, may be 
under possible issues, and also the error messages can be improved allot to 
help users find where the problem is. If I want something from version 8, it 
would be a more detailed and useful error messages. This will go a long way 
to make programming in Mathematica a more pleasant endover.

"
v = VerticalSlider[Dynamic[maxy], {0.1, 4}, Appearance -> "LeftArrow"];
p0 = ListPlot[Range[10]];
p1 := Plot[Cos[x], {x, -Pi, Pi},
   PlotRange -> {{-Pi, Pi}, {-maxy, maxy}}];
Row[{ver, Dynamic[Show[{p1, p0}]]}]

And note again (repeating the theme from the last email I just sent you) how 
I
had to use SetDelayed for p1 here to make sure that things work as expected
regardless of the present global state."

Thanks again John,
--Nasser

On Sat, 5 Dec 2009 06:35:13 -0500 (EST), Nasser M. Abbasi wrote:
> Ver 7.
>
> Hello;
>
> Without the use of DynamicModule[], just some simple code.
>
> I have one Plot and one ListPlot, and I wanted to combine them. Ofcourse I
> can use Show[], but when one of the above objects is Dynamics, I can't do
> that. I tried many things, and so far, no success.
>
> This is what I have and what I tried:
>
> -------------------
> v = VerticalSlider[Dynamic[maxy], {0.1, 4}, Appearance -> "LeftArrow"];
> p0 = ListPlot[Range[10]];
> p1 = Dynamic[Plot[Cos[x], {x, -Pi, Pi}, PlotRange -> {{-Pi, Pi}, {-maxy,
> maxy}}]];
>
> Row[{ver, p1, p0}]
> -------------------
>
> The above works, but p1 and p0 are not combined.
>
> But I wanted to combine p1 and p0 into ONE graphics, except now this will
> not work as p1 is dynamics. I tried
>
> Row[{ver, Show[p1, p0]}]
> Row[{ver, Dynamic@Show[p1, p0]}]
>
> I really thought Dynamic[Show[....]] will do it?
>
> tried few other things....I need to read more about Dynamics, but
> meanwhile
> in case I do not see it, any idea how this can be done?
>
> Notice that  p0 is a ListPlot and not a Plot. Else I would have been able
> to
> simply use one Dynamic at Plot[...] to combine the plots and not even need
> Show[], like this (assuming the second plot is Cos[x])
>
> v = VerticalSlider[Dynamic[maxy], {0.1, 4}, Appearance -> "LeftArrow"];
> p1 = Dynamic[Plot[{Cos[x], Sin[x]}, {x, -Pi, Pi}, PlotRange -> {{-Pi, Pi},
> {-maxy, maxy}}]];
> Row[{ver, p1}]
>
> and this would have worked.
>
> So, how to combine Dynamic graphics objects?
>
> thanks
> --Nasser





  • Prev by Date: Re: How to combine Dynamic graphics in Show?
  • Next by Date: Re: Special Input Characters' Reference Table
  • Previous by thread: Re: How to combine Dynamic graphics in Show?
  • Next by thread: Re: How to combine Dynamic graphics in Show?