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