Inserting a position-limited Locator inside a Manipulate multiplot
- To: mathgroup at smc.vnet.net
- Subject: [mg107147] Inserting a position-limited Locator inside a Manipulate multiplot
- From: adrian skaai <skaai at earthlink.net>
- Date: Thu, 4 Feb 2010 06:25:28 -0500 (EST)
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!