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