MathGroup Archive 2010

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

Search the Archive

Re: Inserting a position-limited Locator inside a Manipulate multiplot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg107184] Re: Inserting a position-limited Locator inside a Manipulate multiplot
  • From: dh <dh at metrohm.com>
  • Date: Fri, 5 Feb 2010 03:20:31 -0500 (EST)
  • References: <hkeapc$svc$1@smc.vnet.net>

Hi Adrian,
as an example, I put a locator on the first curve:

f0[a_, x_] := Sin[3 a x] + x;
f[a_] := Plot[f0[a, x], {x, -5, 7}];
g[a_, b_] := Plot[Cos[a x] b, {x, -5, 7}];
DynamicModule[{p = {0, 0}},
  Manipulate[
   loc := Locator[Dynamic[p, (p = {#[[1]], f0[a, #[[1]] ]} ) &]];
   txt = Text[Style["y=" <> ToString[p[[1]]], 20], Scaled[{0.6, 0.1}]];
   Show[{
     f[a], g[a, b],
     Graphics[{  loc, txt } ]
     }], {a, -4, 4}, {b, {0, 1}, ControlType -> Checkbox}]]

Daniel

adrian skaai wrote:
> Hello,
> 
> First of all, i apologize if the question i post has been posted
> before... I tried to find an applicable message but could not. of
> course my own lack of experience in anything but basic mathematica
> functions doesn't help.
> 
> My original reason for this project was that i am learning to graph the
> behavior of acid-base reactions in human blood. To do this, we are
> given titration plots where we plot a solution with only a strong acid
> and another one with a strong acid and a weak acid. To those of you not
> familiar with such plots, they are useful in determining the ion
> difference (or equivalence point) for a solution, which can tell you
> much about its acid dissociation constant and other important traits.
> If I am successful in implementing this, i would move on to Log-Log
> plots of similar behavior, but that would not be much harder if i solve
> this problem.
> 
> =========The Problem=========
> 
> The plot i wanted to make in Mathematica 7 was where i could compare
> both behaviors on the same graph (titration plots), so I began by
> creating a basic Manipulate Sin(x) plot just to get an idea of the
> concept as once i get that, plugging in my functions should be child's
> play. There are 3 things i want in the final product:
> 
> 1. both plots should be modifiable (which i can do)
> 2. the main plot can persist, but additional ones (some graphs will
> have up to 4 plots) should be able to be removed with a checkbox (i did
> this with a bit of success)
> 3. each plot should have a locator that is constrained to follow the
> plot and return the values for the plot (this was the kicker for me)
> 
> of the three goals, i was able to do #1 & #2 two plots, though i'm not
> sure if i can generalize to three or four plots as i want. The hardest
> for me has been to integrage locators into the plots, but this is also
> the most important. why? because many times the interesting behavior of
> these plots is in areas that are hard to read. I have made Manipulate
> plots before that zoom in, so that helps, but perhaps im still in love
> with the old TI 89 ability to trace a plot (sorry).
> 
> anyways, here is one attempt i made:
> (*this plot was my first successful combination of two functions. i
> want to keep my functions malleable so that i can play with them or
> modify them as i need. i now need to insert a locator that will trace
> them*) f[a_, x_] := Plot[{Sin[3 a x] + x}, {x, -5, 7}]; g[a_, x_, b_]
> := Plot[Cos[a x] b, {x, -5, 7}]; DynamicModule[{x = x}, Manipulate[Show[{f[a, x], g[a, x, b]}], {a, -4, 4}, {b, {0, 1}, ControlType ->
> Checkbox}]]
> 
> =======Extra Info==========
> 
> I tried many times to insert a locator, but failed, the following are
> two examples of my failed attempts:
> (*I had made a few attempts at sticking a LocatorPane in the equations
> but sticking it inside a DynamicModule and sticking everything else
> in it failed, sticking it inside Manipulate failed, part of the
> failure was the fact my Locator required an argument from the
> function, but there is no clear way to give it an argument, so im
> going to begin from scratch on inventing a single function where i
> can stick a locator and get its info on position and also limit its
> movement*)Manipulate[Plot[Sin[x], {x, -2 , 2 }], {{p, {0, 0}},
> Locator}]
> 
> this second attempt was where i was able to update its position... i
> think in an earlier attempt it actually worked, but didn't now that i
> tried to move it again:
> (*this was my first successful integration of the Locator in a plot
> along with updating the position of the locator via the PlotLabel.
> its not the best solution because you usually want a title for the
> plot label, but this is a start*)DynamicModule[{p = {2, 1}}, 
> Manipulate[Plot[{2 Sin[x]}, {x, -2 , 2 }, PlotLabel -> Dynamic[p],
>  Epilog -> Locator[Dynamic[p, (p = Normalize[#]) &]]]]]
> 
> 
> sorry for so much info, but i thought it might help outline my
> limitations. I would truly appreciate any help in this issue...
> particularly with #3
> 
> 
> --
> adrian skaai
> email: skaai at earthlink.net
> I always welcome email at my address if you are a friend and not a
> spammer. With that in mind, the first time you email me, you will be
> met by my spam filter. Don't let it put you off, a quick response to my
> spam filter will get your message through!
> 
> 




  • Prev by Date: Re: Localize Pattern variables
  • Next by Date: Re: Localize Pattern variables
  • Previous by thread: Inserting a position-limited Locator inside a Manipulate multiplot
  • Next by thread: Re: Inserting a position-limited Locator inside a Manipulate multiplot