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