Re: Just primitive ColorFunction
- To: mathgroup at smc.vnet.net
- Subject: [mg87404] Re: Just primitive ColorFunction
- From: David Bailey <dave at Remove_Thisdbailey.co.uk>
- Date: Thu, 10 Apr 2008 02:09:23 -0400 (EDT)
- References: <ftfej7$bu7$1@smc.vnet.net>
=8Aer=FDch Jakub wrote:
> I think, that it must be something very simple, but I cannot find the
> solution....
>
> I need to fill the Plot so, that area above the axis will be red and ar=
ea
> below the axis will be blue. I tried it in a such way:
>
> Plot[Sin[x], {x, 0, 4 Pi} ,
> AxesOrigin -> {0, 0},
> Axes -> {True, True},
> PlotStyle -> Thick,
> ColorFunction ->
> If[Sin[x] >= 0, RGBColor[1, 0, 0], RGBColor[0, 0, 1]],
> Filling -> Axis,
> ImageSize -> {380, 280}]
>
> But Mathematica says, that If is not a valid Color.
>
> If I try it with Function (according to examples in ColorFunction help)=
,
>
> ColorFunction ->
> Function[x, If[Sin[x] >= 0, RGBColor[1, 0, 0], RGBColor[0, 0, 1]]],
>
> it is working, but the color of Filling is red allover the range.
>
> Thanks for any hint, how to achieve the +Red/-Blue filling.
>
> Jakub
>
>
Although others have given you a simpler solution to your particular
problem, I thought it was worthwhile to fix your approach because it is
obviously more general:
Plot[Sin[x], {x, 0, 4 Pi}, AxesOrigin -> {0, 0}, Axes -> {True, True},
PlotStyle -> Thick,
ColorFunction ->
Function[{x, y}, If[y >= 0, RGBColor[1, 0, 0], RGBColor[0, 0, 1]]],
Filling -> Axis, ImageSize -> {380, 280},
ColorFunctionScaling -> False]
Without the option ColorFunctionScaling -> False, the {x,y} values are
scaled 0-1 across the plot, regardless of the actual coordinates (seems
a strange default to me!).
David Bailey
http://www.dbaileyconsultancy.co.uk