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
>