Re: Just primitive ColorFunction
- To: mathgroup at smc.vnet.net
- Subject: [mg87441] Re: Just primitive ColorFunction
- From: Szabolcs Horvát <szhorvat at gmail.com>
- Date: Thu, 10 Apr 2008 02:16:35 -0400 (EDT)
- Organization: University of Bergen
- References: <ftfej7$bu7$1@smc.vnet.net> <ftfk8g$fab$1@smc.vnet.net> <fti3t8$oem$1@smc.vnet.net>
ucervan at gmail.com wrote: > You could also use: > > Plot[Sin[x], {x, 0, 4 Pi}, AxesOrigin -> {0, 0}, Axes -> {True, True}, > PlotStyle -> Thick, > ColorFunction -> (If[Sin[#] >= 0, RGBColor[1, 0, 0], > RGBColor[0, 0, 1]] &), Filling -> Axis, ImageSize -> {380, 280}, > ColorFunctionScaling -> False, FillingStyle -> Automatic] > > Note that the output will be much bigger since VertexColors are > generated for each vertex. Also, segments crossing the x axis will > have end vertices of different colors, so some color bleeding will > occur. > What is a good way to avoid this "colour bleeding" problem? If we want to colour only the lines (but use no fillings), then this looks very ugly: Plot[Sin[x], {x, 0, 4 Pi}, PlotStyle -> Thick, ColorFunction -> (If[Sin[#] >= 0, RGBColor[1, 0, 0], RGBColor[0, 0, 1]] &), ColorFunctionScaling -> False] One solution I found is the following: Plot[Sin[x], {x, 0, 4 Pi}, PlotStyle -> Thick, ColorFunction -> (If[Sin[#] >= 0, RGBColor[1, 0, 0], RGBColor[0, 0, 1]] &), ColorFunctionScaling -> False, Exclusions -> {Pi, 2 Pi, 3 Pi}] But Exclusions was not designed for this. I am not confortable using it because I am afraid that it might skip a section of the curve as with Exclusions -> {Sin[x] == 0}. 1. Is there a more appropriate way to force Plot to calculate the function value at certain points? 2. Is there a way to avoid having to find the zeros of the function manually? (More generally: avoid having to calculate the points where the colouring changes abruptly.) Szabolcs Horvát