Re: What's going on here (Table-generated lists)?
- To: mathgroup at smc.vnet.net
- Subject: [mg97981] Re: What's going on here (Table-generated lists)?
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Fri, 27 Mar 2009 05:34:14 -0500 (EST)
- References: <gqfl2e$ksp$1@smc.vnet.net>
Erik Max Francis wrote:
> I'm seeing a difference in behavior with Plot in conjunction with Table,
> and I'm rather confused at the reason. If I use Plot to plot a list
> of functions, it works as expected, and I get a plot with each function
> in its own color:
>
> Plot[{x, 2 x, 3 x, 4 x, 5 x}, {x, -1, 1}]
>
> If I use Table, then this doesn't work the same way -- the five lines
> are all plotted with the same color:
>
> Plot[Table[k x, {k, 1, 5}], {x, -1, 1}]
>
> I verified that the both objects created have a Head of List, so I don't
> see anything obviously different about them.
>
> Here's what confuses me more: If I generate the table separately and
> then use that as a result in a later evaluation in the Plot, then I get
> the colors back:
>
> In[25]:= Table[k x, {k, 1, 5}]
>
> Out[25]= {x, 2 x, 3 x, 4 x, 5 x}
>
> In[26]:= Plot[%, {x, -1, 1}]
>
> What is going on here? Is it something like Plot does a special scan of
> its first argument before Evaluating it, and if it doesn't start out as
> a List, it concludes that it's all one thing and plots it with the same
> color, as opposed to an explicitly provided list of separate colors?
Yes, and I think that is even documented and not so special at all: As
many other functions Plot has the attribute HoldAll. Use this to get a
different color for each expression:
Plot[Evaluate[Table[k x, {k, 1, 5}]], {x, -1, 1}]
To understand what is going on I recommend to read the following
tutorial in the documentation:
tutorial/NonStandardEvaluation
hth,
albert