Re: plotting contours on a sphere
- To: mathgroup at smc.vnet.net
- Subject: [mg119492] Re: plotting contours on a sphere
- From: Heike Gramberg <heike.gramberg at gmail.com>
- Date: Mon, 6 Jun 2011 06:24:52 -0400 (EDT)
You could use Texture in combination with TextureCoordinateFunction for this: p2a = ContourPlot[ f[\[Theta], \[Phi]], {\[Theta], 0, 2 Pi}, {\[Phi], 0, Pi}, FrameLabel -> {\[Theta], \[Phi]}, ColorFunction -> ColorData["TemperatureMap"], Axes -> False, Frame -> False, ImagePadding -> None, PlotRangePadding -> None]; p3 = SphericalPlot3D[1, {\[Theta], 0, Pi}, {\[Phi], 0, 2 Pi}, Mesh -> None, PlotPoints -> 40, PlotStyle -> {Texture[p2a]}, TextureCoordinateFunction -> ({#5, 1 - #4} &)] Heike On 5 Jun 2011, at 12:04, J Davis wrote: > I would like to plot the contours of a given function f on the surface > of a sphere. > > More specifically, I'd like to "wrap" the contours in p2 below onto > the surface of the sphere in p3. > > f[\[Theta]_, \[Phi]_] = Sin[\[Theta] + \[Phi]]; > p1 = Plot3D[f[\[Theta], \[Phi]], {\[Theta], 0, 2 Pi}, {\[Phi], 0, Pi}, > PlotRange -> All, AxesLabel -> {\[Theta], \[Phi]}, > ColorFunction -> ColorData["TemperatureMap"]]; > p2 = ContourPlot[ > f[\[Theta], \[Phi]], {\[Theta], 0, 2 Pi}, {\[Phi], 0, Pi}, > PlotRange -> All, FrameLabel -> {\[Theta], \[Phi]}, > ColorFunction -> ColorData["TemperatureMap"]]; > p3 = SphericalPlot3D[1, {\[Phi], 0, Pi}, {\[Theta], 0, 2 Pi}, > ColorFunctionScaling -> False, > ColorFunction -> > Function[{x, y, z, \[Theta], \[Phi], r}, > ColorData["TemperatureMap"][ > Rescale[f[\[Phi], \[Theta]], {-1, 1}]]]]; > GraphicsRow[{p1, p2, p3}, ImageSize -> 750] > > Thanks in advance for any insight you can offer. > > Best, > John >