Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

Re: Plotting in nested Manipulates

  • To: mathgroup at smc.vnet.net
  • Subject: [mg124589] Re: Plotting in nested Manipulates
  • From: A Retey <awnl at gmx-topmail.de>
  • Date: Wed, 25 Jan 2012 07:10:08 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jfm07i$jtb$1@smc.vnet.net>

Am 24.01.2012 11:13, schrieb Chris Young:
> I can get this to work:
>
> Clear[c];
>
> Manipulate[
>   With[
>    {
>     values = Table[c[i], {i, 1, n}],
>     controls = Sequence @@ Table[{{c[i], 0.5}, 0, 1, 0.1}, {i, 1, n}]
>     },
>
>    Manipulate[
>     Column[{values, ListLinePlot[Evaluate @ values]}],
>     controls
>     ]
>
>    ],
>   {n, 4, 10, 1}
>   ]
>
> But when I try to put the plot into the "values" variable, nothing happens.
>
> Clear[c];
>
> Manipulate[
>   With[
>    {
>     contents =
>      With[{values = Table[c[i], {i, 1, n}]},
>       Column[{values, ListLinePlot[Evaluate @ values]}]
>       ],
>
>     controls = Sequence @@ Table[{{c[i], i * 0.1}, 0, 1, 0.1}, {i, 1, n}]
>     },
>
>    Manipulate[
>     contents,
>     controls
>     ]
>
>    ],
>   {n, 4, 10, 1}
>   ]
>
>
> Is "With" the wrong thing to use for this?  I didn't have any better
> luck with Module.

I think With is o.k., you are missing a Dynamic for the ListLinePlot, 
otherwise the ListLinePlot is evaluated too early, when the c[i] don't 
have values yet, and it will never be updated later:

Manipulate[
  With[{
    contents =
     With[{values = Table[c[i], {i, 1, n}]},
      Column[{values, Dynamic[ListLinePlot[values]]}]
      ],
    controls = Sequence @@ Table[{{c[i], i*0.1}, 0, 1, 0.1}, {i, 1, n}]
    },
   Manipulate[contents, controls]],
  {n, 4, 10, 1}
  ]

Now if you wonder why that is not necessary for the values in the first 
row of Column: ListLinePlot is a function that generates a Graphics, and 
that Graphics will not contain any of the c[i] anymore, since 
ListLinePlot dismissed the nonnumerical values. The following will 
create the graphics directly, and thus will be happy without the Dynamic:

Clear[c];

Manipulate[
  With[{
    contents = With[{values = Table[c[i], {i, 1, n}]},
      Column[{
        values,
        Graphics[{Blue,
          Line[Table[{k, values[[k]]}, {k, Length[values]}]]},
         Frame -> True, AspectRatio -> 1/GoldenRatio]
        }]
      ],
    controls = Sequence @@ Table[{{c[i], i*0.1}, 0, 1, 0.1}, {i, 1, n}]
    },
   Manipulate[contents, controls]],
  {n, 4, 10, 1}
  ]


hth,

albert




  • Prev by Date: Re: Mathematica 8 + OS X + McAfee = trouble; help?
  • Next by Date: Re: Automatically colred and indexed custom locators
  • Previous by thread: Plotting in nested Manipulates
  • Next by thread: Re: Plotting in nested Manipulates