# Changing the plot variable inside Plot [duplicate]

Possible Duplicate:
Difference in Plot when using Evaluate vs when not using Evaluate

Assume one has vector of functions (e.g., vec={x,x^2}).

The command Plot[vec, {x, -2, 2}, PlotStyle -> {Blue, Red}] allows one to plot curves in different colors. Any use of the replacement operator, however, causes all curves to adopt the final listed color. For example, Plot[vec /. x -> y, {y, -2, 2}, PlotStyle -> {Blue, Red}] gives How does one specify different colors for different curves if a replacement (/.) is used within the plot command?

Plot has attribute HoldAll (you can check with Attributes[Plot]), which makes it not recognize the two separate curves and "sees" it as one. Use Evaluate to overcome this.
Plot[Evaluate[vec /. x -> y], {y, -2, 2}, PlotStyle -> {Blue, Red}]

• Perfect, thank you. I didn't know about the HoldAll attribute. Having now read about it, if I understand correctly, Hold[x/.x->y] prevents the substitution from taking place. How does Plot manage to plot the curves (incorrect colors aside) over the domain $y\in\left[-2,2\right]$ if the substitution $x\mapsto y$ never takes place? – user001 Mar 20 '12 at 19:56
• There's probably some ReleaseHold called further down...though that's a good question :) – tkott Mar 20 '12 at 19:57
• @user001 HoldAll does not prevent the replacement from taking place — you can see this with simply doing HoldAll[vec /. x -> y]. However, what it does do is prevent Plot from recognizing that there are two functions in that list and makes it see only one. You can learn more from this answer by Sasha to a related question. – rm -rf Mar 20 '12 at 20:15