Re: Workaround for Plot[ ] and color via PlotStyle
- To: mathgroup at smc.vnet.net
- Subject: [mg118466] Re: Workaround for Plot[ ] and color via PlotStyle
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Fri, 29 Apr 2011 07:30:34 -0400 (EDT)
This is a FAQ. As stated in the More Information for Plot: - Plot has attribute HoldAll, and evaluates f only after assigning specific numerical values to x. - In some cases it may be more efficient to use Evaluate to evaluate f symbolically before specific numerical values are assigned to x. Attributes[Plot] {HoldAll, Protected} Plot[Evaluate[{a x, a x^2, a x^3} /. {a -> 1}], {x, 0, 2}, PlotStyle -> {Red, Green, Blue}] You can also factor the a out Plot[Evaluate[a {x, x^2, x^3} /. {a -> 1}], {x, 0, 2}, PlotStyle -> {Red, Green, Blue}] Show[Table[Plot[y = x^k, {x, -5, 5}, PlotStyle -> {Thick, Hue[0.5 (k - 1)/3]}], {k, 1, 3}], PlotRange -> {-10, 10}] Using a single Plot Plot[Evaluate[x^Range[3]], {x, -5, 5}, PlotStyle -> ({Thick, #} & /@ {Red, Yellow, Green}), PlotRange -> {-10, 10}] Bob Hanlon ---- "Christopher O. Young" <cy56 at comcast.net> wrote: ============= As a previous poster showed, Plot is a little inconsistent when it comes to mapping colors via PlotStyle. Plot[ { a x /. {a -> 1}, a x^2 /. {a -> 1}, a x^3 /. {a -> 1} }, {x, 0, 2}, PlotStyle -> {Red, Green, Blue} ] works OK but Plot[ { a x, a x^2, a x^3 } /. {a -> 1}, {x, 0, 2}, PlotStyle -> {Red, Green, Blue} ] just produces blue plots. So I tried to figure out to work from the fully written-out form: Show[ Plot[y = x, {x, -5, 5}, PlotStyle -> {Thick, Red}], Plot[y = x^2, {x, -5, 5}, PlotStyle -> {Thick, Yellow}], Plot[y = x^3, {x, -5, 5}, PlotStyle -> {Thick, Blue}] ] The above works fine, but is very redundant. A Table will streamline the above commands: Show[ Table[ Plot[ y = x^k, {x, -5, 5}, PlotStyle -> {Thick, Hue[0.5 (k - 1)/3]} ], {k, 1, 3}] ] Does anybody know how to go through a list of colors via the k index? At any rate, if you're a big fan of postfix notation, the following can be rewritten in stages, as: Table[ Plot[ y = x^k, {x, -5, 5}, PlotStyle -> {Thick, Hue[0.5 (k - 1)/3]} ], {k, 1, 3} ] // Show Plot[ y = x^k, {x, -5, 5}, PlotStyle -> {Thick, Hue[0.5 (k - 1)/3]} ]~Table~{k, 1, 3}\ // Show And, finally: (y = x^k // Plot[ #, {x, -5, 5}, PlotStyle -> {Thick, Hue[0.5 (k - 1)/3]} ] &)\ ~Table~{k, 1, 3}\ // Show