MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: how fill PolarPlot?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84431] Re: [mg84420] how fill PolarPlot?
  • From: Murray Eisenberg <murray at math.umass.edu>
  • Date: Mon, 24 Dec 2007 04:43:42 -0500 (EST)
  • Organization: Mathematics & Statistics, Univ. of Mass./Amherst
  • References: <200712230934.EAA03990@smc.vnet.net>
  • Reply-to: murray at math.umass.edu

I was finally able to do this with Epilog->{Inset[RegionPlot[...]]}.

Below is the entire code for the embellished plot I wanted.  I am still 
unhappy with at the amount of work I had to do in order to adjust the 
ImageSize of the filled leaf and the thickness of its boundary so as to 
cover up the underlying blue boundary of that leaf from the PolarPlot.

Some of that adjustment could probably be avoided by using a 
ColorFunction for the overall POlarPlot.  But how does one set up 
ColorFunction for PolarPlot so as to specify using, say, one color for 
part of the plot and another for another part, depending on the value of 
theta alone?

I found no example of ColorFunction in the documentation.  I tried, e.g.,

  PolarPlot[Cos[2 theta], {theta, 0, 2 Pi},
    ColorFunction ->
      Function[{theta,r}, If[-Pi/4 <= theta <= Pi/4, Red, Black]]]

but that doesn't work as expected.

The finished figure's code:

   txt[t_,{x_,y_}]:=Style[Text[t,{x,y}],FontSize->30,FontWeight->Bold]
   {xmin,xmax}={-1.425,1.425}; {ymin,ymax}={-1.25,1.25};

   PolarPlot[Cos[2t],{t,0,2Pi}, PlotRange->{{xmin,xmax},{ymin,ymax}},
     PlotStyle->{ColorData["Legacy","SteelBlue"], Thickness[0.007]},
     Ticks->None,

     Epilog->{
       Inset[RegionPlot[(x^2+y^2)^(3/2)<=x^2-y^2,{x,-0.02,1},{y,-1,1},
               PlotStyle->ColorData["HTML","Gold"],
               BoundaryStyle->Directive[Thickness[0.025],
               ColorData["Legacy","CadmiumOrange"]],
               Frame->False,AspectRatio->Automatic,
               ImageSize->2.6*72],
          {0.5,0}],
        Black,Thick,Dashing[{0.045,0.03}],
        Line[{{0,0},{0.85,0.85}}],Line[{{0,0},{0.85,-0.85}}],
        Dashing[{}],Thick,
        Arrow[{{xmin,0},{xmax,0}}],Arrow[{{0,ymin},{0,ymax}}],
        txt[TraditionalForm[HoldForm[r==cos 2t ]],{-0.6,1.0}],
        txt[TraditionalForm[HoldForm[t==Pi/4]],{1.125,0.925}],
        txt[TraditionalForm[HoldForm[t==-Pi/4]],{1.125,-0.99}]
     },
   ImageSize->7*72]

Murray Eisenberg wrote:
> I Mathematica 6 I have a PolarPlot, e.g., a 4-leaved rose:
> 
>    PolarPlot[Cos[2 theta], {theta, 0, 2 Pi}]
> 
> How can I fill the inside -- or, what I really want, just the leaf in 
> the right half-plane -- with some color?
> 
> I note that Filling does not seem to be an option for PolarPlot (or for 
> what would be almost as good, ParametricPlot).
> 
> I tried including the following (obtained by converting from :
> 
>    Prolog->RegionPlot[(x^2 + y^2)^(3/2) <= x^2-y^2, {x,-0.02,1},{y,-1,1},
>        Frame->False, AspectRatio->Automatic]
> 
> However, that led to a mysterious error message:
> 
>    $Aborted is not a Graphics primitive or directive.
> 
> (Perhaps because of an incompatibility of a Prolog with cartesian 
> coordinates inside a polar coordinate plot??)
> 

-- 
Murray Eisenberg                     murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower      phone 413 549-1020 (H)
University of Massachusetts                413 545-2859 (W)
710 North Pleasant Street            fax   413 545-1801
Amherst, MA 01003-9305


  • Prev by Date: Re: sum over i+j+k==n
  • Next by Date: Re: how fill PolarPlot?
  • Previous by thread: Re: how fill PolarPlot?
  • Next by thread: Re: how fill PolarPlot?