MathGroup Archive 2008

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

Search the Archive

Re: Mouse operation, slider, dynamics, plot combination

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84901] Re: Mouse operation, slider, dynamics, plot combination
  • From: Albert Retey <awnl at arcor.net>
  • Date: Fri, 18 Jan 2008 05:51:56 -0500 (EST)
  • References: <fmmknh$f1e$1@smc.vnet.net>

Hi,



> I am not sure what I am doing wrong here. I am doing the following:
> 
> Dynamic[Plot[Sin[x], {x, -r, r},
>     PlotRange -> {{-r, r}, {-s, s}},
>    Frame -> True,
>    ImageSize -> 300,
>    FrameLabel ->  {Slider[Dynamic[r], {1, 10}], VerticalSlider[Dynamic[s], 
> {1, 10}]},
>    RotateLabel -> False]
> ]
> 
> The above works to some extent, but when I press the mouse on the slider to 
> move it, it does not really move well. When I click on a different position 
> on the slider, it jumps there and the plot is updated.
> 
> One way to fix this problem is to add ContinuousAction -> False to each 
> Dynamics, so now the slides move smooth, but the plot is NOT updated until 
> one releases the mouse:
> 
> Dynamic[Plot[Sin[x], {x, -r, r},
>       PlotRange -> {{-r, r}, {-s, s}},
>       Frame -> True, ImageSize -> 300,
>       FrameLabel -> {Slider[Dynamic[r], {1, 10}, ContinuousAction -> False],
>                                VerticalSlider[Dynamic[s], {1, 10}, 
> ContinuousAction -> False]},
>       RotateLabel -> False]
> ]
> 
> I'd like the slider to move smoothly and the put updated at the same time. I 
> am sure this can be done ofcourse.
> 
> I tried adding Refersh, but this did not help. I tried playing with the 
> options to Dynamic[ Plot[..], {options} ] but again, did not get it working.

I think your problem is that you recreate the whole plot whenever you 
change one of your parameters. Note that you only need to make the 
option values Dynamic. Also I think it is not possible to use the 
Sliders as FrameLabels without problems. The following does what I think 
you intend to do and runs smoothly on my machine:

Grid[{
   {
    VerticalSlider[Dynamic[s], {1, 10}],
    Show[
     Plot[Sin[x], {x, -10, 10}, Frame -> True, ImageSize -> 300],
     PlotRange -> Dynamic[{{-r, r}, {-s, s}}]
     ]
    }, {
    "", Slider[Dynamic[r], {1, 10}, ImageSize -> 300]}
   }]

You might want to localize r and s with DynamicModule:

DynamicModule[{s = 5.5, r = 5.5},
  Grid[{
    {
     VerticalSlider[Dynamic[s], {1, 10}],
     Show[
      Plot[Sin[x], {x, -10, 10}],
      PlotRange -> Dynamic[{{-r, r}, {-s, s}}],
      Frame -> True, ImageSize -> 300
     }, {
     "", Slider[Dynamic[r], {1, 10}, ImageSize -> 300]}
    }]
  ]


hth, albert


  • Prev by Date: Re: Putting an expression into a module
  • Next by Date: Re: Re: Version 6 graphics can be painfully slow
  • Previous by thread: Mouse operation, slider, dynamics, plot combination
  • Next by thread: On placement of controls around Manipulate display area and positioning of control varibles relative to the control itself.