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