Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I use the code below to visualise the connection between a sine curve and the unit circle, but would like to make the slider wider, so it has at least almost the same with as the image. I have tried to replace ControlType->Slider[] with ControlType -> Slider[ImageSize->800], but this seems to have no effect at all och the resulting graphics. The question is thus how to set the width of the slider inside Manipulate?

Manipulate[
 With[{ar = 1/(2*Pi), o = v - Cos[v]}, 
  Show[Plot[Sin[x], {x, -6*Pi, 6*Pi}, 
    PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, PlotStyle -> {Black}, 
    AxesLabel -> {"v", Sin["v"]}, AspectRatio -> ar],
   ListLinePlot[{{o + Cos[v], 0}, {o + Cos[v], Sin[v]}}, 
    PlotStyle -> {Thick, Black}, AspectRatio -> ar],
   ListLinePlot[{{o + Cos[v], Sin[v]}, {o, 0}}, 
    PlotStyle -> {Dashed, Black}, AspectRatio -> ar],
   Graphics[{AbsolutePointSize[8], Point[{o, 0}]}, AspectRatio -> ar],
   Plot[{-Sqrt[1 - (x - o)^2], Sqrt[1 - (x - o)^2]}, {x, o - 1, 
     o + 1}, PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, 
    PlotStyle -> {{Thick, Orange}, {Thick, Orange}}, 
    AspectRatio -> ar], ImageSize -> 800]], {v, -3/2*Pi, 3/2*Pi}, 
 ControlType -> Slider[]]

The resulting graphics

share|improve this question
1  
you mean like that: {v, -3/2*Pi, 3/2*Pi, ControlType -> Slider, ImageSize -> 800}? –  Pinguin Dirk May 2 '13 at 9:59
add comment

2 Answers 2

up vote 8 down vote accepted

You have to study the documentation carefully, but I agree that help-pages like the one of Manipulate are very densely packed with information. In the Details and Options section you find how to set options for controls:

{{u,...},...,opts}    control with particular options

The non-obvious part is, that you have to set the ControlType as well to make this work. Therefore, you can use

{v, -3/2*Pi, 3/2*Pi, ControlType -> Slider, ImageSize -> 800}

to achieve the wanted behavior. Another way is to replace Manipulate by a full DynamicModule which is a bit more code but gives you some more flexibility

DynamicModule[{v = -3/2 Pi, o},
 o = v - Cos[v];
 Panel@
  With[{ar = 1/(2*Pi)},
   Column[{
     Slider[Dynamic[v, (v = #; o = v - Cos[v]; &)], {-2 Pi, 2 Pi}, 
      ImageSize -> 800],
     Dynamic@
      Show[Plot[Sin[x], {x, -6*Pi, 6*Pi}, 
        PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, PlotStyle -> {Black}, 
        AxesLabel -> {"v", Sin["v"]}, AspectRatio -> ar], 
       ListLinePlot[{{o + Cos[v], 0}, {o + Cos[v], Sin[v]}}, 
        PlotStyle -> {Thick, Black}, AspectRatio -> ar],
       ListLinePlot[{{o + Cos[v], Sin[v]}, {o, 0}}, 
        PlotStyle -> {Dashed, Black}, AspectRatio -> ar], 
       Graphics[{AbsolutePointSize[8], Point[{o, 0}]}, 
        AspectRatio -> ar], 
       Plot[{-Sqrt[1 - (x - o)^2], Sqrt[1 - (x - o)^2]}, {x, o - 1, 
         o + 1}, PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, 
        PlotStyle -> {{Thick, Orange}, {Thick, Orange}}, 
        AspectRatio -> ar], ImageSize -> 800, Background -> White]
     }]
   ]]

enter image description here

share|improve this answer
add comment

This will work. The only change is that I removed the option ControlType and added a "slider function" at the end of the control for v. Note that Pinguin Dirks suggestion in the comments also works, is more convenient and he beat me to it :). Still I guess this code shows how you can have even more control over your slider.

Manipulate[
 With[{ar = 1/(2*Pi), o = v - Cos[v]}, 
  Show[Plot[Sin[x], {x, -6*Pi, 6*Pi}, 
    PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, PlotStyle -> {Black}, 
    AxesLabel -> {"v", Sin["v"]}, AspectRatio -> ar], 
   ListLinePlot[{{o + Cos[v], 0}, {o + Cos[v], Sin[v]}}, 
    PlotStyle -> {Thick, Black}, AspectRatio -> ar], 
   ListLinePlot[{{o + Cos[v], Sin[v]}, {o, 0}}, 
    PlotStyle -> {Dashed, Black}, AspectRatio -> ar], 
   Graphics[{AbsolutePointSize[8], Point[{o, 0}]}, AspectRatio -> ar],
    Plot[{-Sqrt[1 - (x - o)^2], Sqrt[1 - (x - o)^2]}, {x, o - 1, 
     o + 1}, PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, 
    PlotStyle -> {{Thick, Orange}, {Thick, Orange}}, 
    AspectRatio -> ar], ImageSize -> 800]], {v, -3/2*Pi, 3/2*Pi, 
  Slider[Dynamic[v], {-3/2*Pi, 3/2*Pi}, ImageSize -> 800] &}]
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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