Re: Surface graphics (Plot4D) coloring question
- To: mathgroup at smc.vnet.net
- Subject: [mg31858] Re: Surface graphics (Plot4D) coloring question
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Fri, 7 Dec 2001 05:56:55 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Mak Diamond wrote: I have reason to calculate the volume over a (non-centred) circular area of a bivariate normal distribution (BND). By non-centred, I simply mean that the centre of the disc does not correspond with the means of the two normal distributions. ....... I would like to construct a surface graphic (probably with Plot3D or ListPlot3D) of the BND, but then I would like to color a part of the suface (the part being defined by the underlying disc) in a distinctive colour (I should probably say "distinctive colours" since keeping some part of the Lighting as well as grid would be nice). Has anyone done something like this before? I searched the archive but found no similar question. ----------------------- That can be done if you download the package posted at http://www.mathsource.com/Content/Enhancements/Graphics/3D/0211-116 and I think you need to put the package in a folder included in the list you get after evaluating ($Path). The function in the package doesn't have a DisplayFunction option. In fact it only has a few options in all, and I don't think it's well designed. However it does make nice looking results! First load the package. In[1]:= Needs["Graphics`phasePlot3D`", "phasePlot3D.m"] ------------- Here I define a bivariate normal PDF. In[2]:= NormalPDF[x1_, x2_]:=E^((-(x1*((4*x1)/3 - (2*x2)/3)) - x2*((-2*x1)/3 + (4*x2)/3))/2)/(Sqrt[3]*Pi); -------------- Suppose you want to show the portion above a circle with radius 0.9 centered at {x1, x2}={1, -1}. In that case the code below will do what you want. In[3]:= InsideCircleQ[ {x1_, x2_} ]:= Which[Sqrt[{x1-1, x2+1}.{x1-1, x2+1}]<0.9, 1, True, 2]; Yes[{x1_, x2_}]:=NormalPDF[x1, x2]+0.002; No[{x1_, x2_}]:=-0.1; In[6]:= gr1=Graphics3D[ Plot3D[ NormalPDF[ x1, x2 ], {x1, -3, 3}, {x2, -3, 3}, PlotRange->{0, 0.184}, PlotPoints->30, DisplayFunction->Identity ] ]; gr2=phasePlot3D[InsideCircleQ, {Yes, No}, {x1, -3, 3}, {x2, -3, 3}, PlotRange->{0, 0.184}, PlotPoints->30 ]; gr2=Insert[gr2, SurfaceColor[RGBColor[1.0,0.8,0.8]], {1, 1} ]; Show[gr1, gr2, DisplayFunction->$DisplayFunction]; (* Graphics not shown *) If you have questions I can explain how the code above works. ------------------ Regards, Ted Ersek Check Mathematica Tips, Tricks at http://www.verbeia.com/mathematica/tips/Tricks.html