3
$\begingroup$

Is there a way to overlay a plot into a blank area of a Manipulate control panel, that will still update according to the controls in the Manipulate function?

This is an image of what I have:

Imgur

You can see on the bottom left that I have a semi-function plot there. I am using the function Overlay[] to do this, but I'm not sure if its the best way. What you see is two nested Manipulates, one with the control panel on the left, and the 2nd with the control panel on the bottom.

Unfortunately, the extra plot doesn't update with any of the sliders. I guess something with Dynamic[] could work, but I don't know how to combine that with Manipulate!

Thanks!

$\endgroup$
3
  • 1
    $\begingroup$ btw, you do not need overlay to put a plot in the "Manipulate control panel". Any Dynamic[] there will show up. see reference.wolfram.com/mathematica/tutorial/… and search for It is also possible to combine custom controls with other dynamic elements in the controls area but again, it is not too clear to me what are you asking. $\endgroup$
    – Nasser
    Jan 20, 2014 at 8:01
  • $\begingroup$ Basically, those 5 blue dotted lines on the right are x-locations of thermocouples. The middle plot is the temperature distribution over x (distance). However, the plot on the bottom left is temperature vs. time, so it will basically be 5 horizontal lines at each of the 5 temperatures. As the middle plot changes when the sliders are adjusted, that bottom left plot should change as well. I'll look into the Dynamic[] documentation and see if I can get it to work. Thanks! $\endgroup$
    – madacho
    Jan 20, 2014 at 16:28
  • $\begingroup$ @Kuba Yes! Sorry for not responding earlier, I got it to work with your help. Thank you! $\endgroup$
    – madacho
    Mar 22, 2014 at 19:04

1 Answer 1

4
$\begingroup$

I feel it is a duplicate but I can't find it.

This is the way to go, just use Column and Control on Manipulate arguments that are referring to particular variables:

Manipulate[
 Column[ {Plot[Tan[a x], {x, 0, 1}], Plot[Cot[a x], {x, 0, 1}]} ]
 ,
 Column[{ Control[{a, 0, 1}],
          Dynamic@Plot[Cos[ x/(a + 1)], {x, 0, 1}]
        }, Center, Spacings -> 5]
 , ControlPlacement -> Left
 ]

enter image description here

Notice that by default only first argument is wrapped in Dynamic so I had to add Dynamic for the Plot placed in "controls area". TrackedSymbols :> {a} should be used for more complicated applications to avoid unecessary calculations.

At the end I'd suggest to use DynamicModule to have full control on what's happening and where things are.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.