---
title: "SphericalPlot3D"
language: "en"
type: "Symbol"
summary: "SphericalPlot3D[r, \\[Theta], \\[Phi]] generates a 3D plot with a spherical radius r as a function of spherical coordinates \\[Theta] and \\[Phi]. SphericalPlot3D[r, {\\[Theta], \\[Theta]min, \\[Theta]max}, {\\[Phi], \\ \\[Phi]min, \\[Phi]max}] generates a 3D spherical plot over the specified ranges of spherical coordinates. SphericalPlot3D[{r1, r2, ...}, {\\[Theta], \\[Theta]min, \\[Theta]max}, {\\[Phi], \\ \\[Phi]min, \\[Phi]max}] generates a 3D spherical plot with multiple surfaces."
keywords: 
- azimuth
- latitude
- longitude
- polar plot 3d
- spherical
- spherical coordinates
- spherical eigenfunctions
- spherical plot 3D
- spherical plot3
- spherical symmetry
- zenith
- azimuthal plot
canonical_url: "https://reference.wolfram.com/language/ref/SphericalPlot3D.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Function Visualization"
    link: "https://reference.wolfram.com/language/guide/FunctionVisualization.en.md"
  - 
    title: "Angles and Polar Coordinates"
    link: "https://reference.wolfram.com/language/guide/AnglesAndPolarCoordinates.en.md"
related_functions: 
  - 
    title: "RevolutionPlot3D"
    link: "https://reference.wolfram.com/language/ref/RevolutionPlot3D.en.md"
  - 
    title: "ParametricPlot3D"
    link: "https://reference.wolfram.com/language/ref/ParametricPlot3D.en.md"
  - 
    title: "PolarPlot"
    link: "https://reference.wolfram.com/language/ref/PolarPlot.en.md"
  - 
    title: "Sphere"
    link: "https://reference.wolfram.com/language/ref/Sphere.en.md"
  - 
    title: "RotationMatrix"
    link: "https://reference.wolfram.com/language/ref/RotationMatrix.en.md"
related_tutorials: 
  - 
    title: "Some Special Plots"
    link: "https://reference.wolfram.com/language/tutorial/GraphicsAndSound.en.md#31896"
---
# SphericalPlot3D

SphericalPlot3D[r, θ, ϕ] generates a 3D plot with a spherical radius r as a function of spherical coordinates θ and ϕ.

SphericalPlot3D[r, {θ, θmin, θmax}, {ϕ, ϕmin, ϕmax}] generates a 3D spherical plot over the specified ranges of spherical coordinates.

SphericalPlot3D[{r1, r2, …}, {θ, θmin, θmax}, {ϕ, ϕmin, ϕmax}] generates a 3D spherical plot with multiple surfaces.

## Details and Options

* The angles ``θ`` and ``ϕ`` are measured in radians.

* $\pi /2-\theta$ corresponds to "latitude"; $\theta$ is 0 at the "north pole", and $\pi$ at the "south pole".

* ``ϕ`` corresponds to "longitude", varying from 0 to $2 \pi$ counterclockwise looking from the north pole.

* ``SphericalPlot3D[r, θ, ϕ]`` takes ``θ`` to have range 0 to $\pi$, and ``ϕ`` to have range 0 to $2 \pi$.

* The $x$, $y$, $z$ position corresponding to $r$, $\theta$, $\phi$ is $r \sin (\theta ) \cos (\phi )$, $r \sin (\theta ) \sin (\phi )$, $r \cos (\theta )$. The variables $\theta$ and $\phi$ can have any values. The surfaces they define can overlap radially.

* Holes are left at positions where the $r_i$ etc. evaluate to ``None``, or anything other than real numbers.

* ``SphericalPlot3D`` treats the variables ``θ`` and ``ϕ`` as local, effectively using ``Block``.

* ``SphericalPlot3D`` has attribute ``HoldAll``, and evaluates the $r_i$ only after assigning specific numerical values to variables.

* In some cases it may be more efficient to use ``Evaluate`` to evaluate the $r_i$ symbolically before specific numerical values are assigned to variables.

* ``SphericalPlot3D`` has the same options as ``Graphics3D``, with the following additions and changes:  []

|                            |                   |                                                         |
| :------------------------- | :---------------- | :------------------------------------------------------ |
| Axes                       | True              | whether to draw axes                                    |
| BoundaryStyle              | Automatic         | how to draw boundary lines for surfaces                 |
| ColorFunction              | Automatic         | how to determine the color of curves and surfaces       |
| ColorFunctionScaling       | True              | whether to scale arguments to ColorFunction             |
| EvaluationMonitor          | None              | expression to evaluate at every function evaluation     |
| Exclusions                 | Automatic         | θ,  ϕ curves to exclude                                 |
| ExclusionsStyle            | None              | what to draw at excluded points or curves               |
| MaxRecursion               | Automatic         | the maximum number of recursive subdivisions allowed    |
| Mesh                       | Automatic         | how many mesh divisions in each direction to draw       |
| MeshFunctions              | {#4&, #5&}        | how to determine the placement of mesh divisions        |
| MeshShading                | None              | how to shade regions between mesh divisions             |
| MeshStyle                  | Automatic         | the style for mesh divisions                            |
| Method                     | Automatic         | the method to use for refining surfaces                 |
| NormalsFunction            | Automatic         | how to determine effective surface normals              |
| PerformanceGoal            | \$PerformanceGoal | aspects of performance to try to optimize               |
| PlotLegends                | None              | legends for surfaces                                    |
| PlotPoints                 | Automatic         | the initial number of sample points in each parameter   |
| PlotStyle                  | Automatic         | graphics directives for the style for each object       |
| PlotTheme                  | \$PlotTheme       | overall theme for the plot                              |
| RegionFunction             | (True&)           | how to determine whether a point should be included     |
| ScalingFunctions           | None              | how to scale individual coordinates                     |
| TextureCoordinateFunction  | Automatic         | how to determine texture coordinates                    |
| TextureCoordinateScaling   | True              | whether to scale arguments to TextureCoordinateFunction |
| WorkingPrecision           | MachinePrecision  | the precision used in internal computations             |

* Interactive labeling can be specified for curves or surfaces using ``Tooltip``, ``StatusArea``, or ``Annotation``.

* ``SphericalPlot3D[Tooltip[{r1, r2, …}], …]`` specifies that the $r_i$ should be displayed as tooltip labels for the corresponding surfaces.

* ``Tooltip[r, label]`` specifies an explicit tooltip label for a surface.

* ``SphericalPlot3D`` initially evaluates each function at a number of equally spaced sample points specified by ``PlotPoints``. Then it uses an adaptive algorithm to choose additional sample points, subdividing in each parameter at most ``MaxRecursion`` times.

* You should realize that with the finite number of sample points used, it is possible for ``SphericalPlot3D`` to miss features in your functions. To check your results, you should try increasing the settings for ``PlotPoints`` and ``MaxRecursion``.

* ``On[SphericalPlot3D::accbend]`` makes ``SphericalPlot3D`` print a message if it is unable to reach a certain smoothness of curve.

* The arguments supplied to functions in ``MeshFunctions`` and ``RegionFunction`` are $x$, $y$, $z$, $\theta$, $\phi$, and $r$. Functions in ``ColorFunction`` and ``TextureCoordinateFunction`` are by default supplied with scaled versions of these arguments.

* The functions are evaluated all over each surface.

* By default, surfaces are treated as uniform white diffuse reflectors, corresponding to ``ColorFunction -> (White&)``.

* ``SphericalPlot3D`` returns ``Graphics3D[GraphicsComplex[data]]``.

* Themes that affect 3D surfaces include:

|         |                |                                   |
| ------- | -------------- | --------------------------------- |
| [image] | "DarkMesh"     | dark mesh lines                   |
| [image] | "GrayMesh"     | gray mesh lines                   |
| [image] | "LightMesh"    | light mesh lines                  |
| [image] | "ZMesh"        | vertically distributed mesh lines |
| [image] | "ThickSurface" | add thickness to surfaces         |

* Possible settings for ``ScalingFunctions`` include:

|                      |                                    |
| -------------------- | ---------------------------------- |
| {sx, sy, sz}         | scale the x, y and z coordinates   |
| {sx, sy, sz, sθ, sϕ} | scale the θ and ϕ parameter spaces |

* Common built-in scaling functions ``s`` include:

|             |         |                                                     |
| ----------- | ------- | --------------------------------------------------- |
| "Log"       | [image] | log scale with automatic tick labeling              |
| "Log10"     | [image] | base-10 log scale with powers of 10 for ticks       |
| "SignedLog" | [image] | log-like scale that includes 0 and negative numbers |
| "Reverse"   | [image] | reverse the coordinate direction                    |
| "Infinite"  | [image] | infinite scale                                      |

* Scaling the ``θ`` or ``ϕ`` parameter space affects how the plot is sampled, but not the overall visual appearance of the plot.

### List of all options

|                           |                   |                                                                                    |
| ------------------------- | ----------------- | ---------------------------------------------------------------------------------- |
| AlignmentPoint            | Center            | the default point in the graphic to align with                                     |
| AspectRatio               | Automatic         | ratio of height to width                                                           |
| Axes                      | True              | whether to draw axes                                                               |
| AxesEdge                  | Automatic         | on which edges to put axes                                                         |
| AxesLabel                 | None              | axes labels                                                                        |
| AxesOrigin                | Automatic         | where axes should cross                                                            |
| AxesStyle                 | {}                | graphics directives to specify the style for axes                                  |
| Background                | None              | background color for the plot                                                      |
| BaselinePosition          | Automatic         | how to align with a surrounding text baseline                                      |
| BaseStyle                 | {}                | base style specifications for the graphic                                          |
| BoundaryStyle             | Automatic         | how to draw boundary lines for surfaces                                            |
| Boxed                     | True              | whether to draw the bounding box                                                   |
| BoxRatios                 | Automatic         | bounding 3D box ratios                                                             |
| BoxStyle                  | {}                | style specifications for the box                                                   |
| ClipPlanes                | None              | clipping planes                                                                    |
| ClipPlanesStyle           | Automatic         | style specifications for clipping planes                                           |
| ColorFunction             | Automatic         | how to determine the color of curves and surfaces                                  |
| ColorFunctionScaling      | True              | whether to scale arguments to ColorFunction                                        |
| ContentSelectable         | Automatic         | whether to allow contents to be selected                                           |
| ControllerLinking         | False             | when to link to external rotation controllers                                      |
| ControllerPath            | Automatic         | what external controllers to try to use                                            |
| Epilog                    | {}                | 2D graphics primitives to be rendered after the main plot                          |
| EvaluationMonitor         | None              | expression to evaluate at every function evaluation                                |
| Exclusions                | Automatic         | θ,  ϕ curves to exclude                                                            |
| ExclusionsStyle           | None              | what to draw at excluded points or curves                                          |
| FaceGrids                 | None              | grid lines to draw on the bounding box                                             |
| FaceGridsStyle            | {}                | style specifications for face grids                                                |
| FormatType                | TraditionalForm   | default format type for text                                                       |
| ImageMargins              | 0.                | the margins to leave around the graphic                                            |
| ImagePadding              | All               | what extra padding to allow for labels, etc.                                       |
| ImageSize                 | Automatic         | absolute size at which to render the graphic                                       |
| LabelStyle                | {}                | style specifications for labels                                                    |
| Lighting                  | Automatic         | simulated light sources to use                                                     |
| MaxRecursion              | Automatic         | the maximum number of recursive subdivisions allowed                               |
| Mesh                      | Automatic         | how many mesh divisions in each direction to draw                                  |
| MeshFunctions             | {#4&, #5&}        | how to determine the placement of mesh divisions                                   |
| MeshShading               | None              | how to shade regions between mesh divisions                                        |
| MeshStyle                 | Automatic         | the style for mesh divisions                                                       |
| Method                    | Automatic         | the method to use for refining surfaces                                            |
| NormalsFunction           | Automatic         | how to determine effective surface normals                                         |
| PerformanceGoal           | \$PerformanceGoal | aspects of performance to try to optimize                                          |
| PlotLabel                 | None              | a label for the plot                                                               |
| PlotLegends               | None              | legends for surfaces                                                               |
| PlotPoints                | Automatic         | the initial number of sample points in each parameter                              |
| PlotRange                 | All               | range of values to include                                                         |
| PlotRangePadding          | Automatic         | how much to pad the range of values                                                |
| PlotRegion                | Automatic         | final display region to be filled                                                  |
| PlotStyle                 | Automatic         | graphics directives for the style for each object                                  |
| PlotTheme                 | \$PlotTheme       | overall theme for the plot                                                         |
| PreserveImageOptions      | Automatic         | whether to preserve image options when displaying new versions of the same graphic |
| Prolog                    | {}                | 2D graphics primitives to be rendered before the main plot                         |
| RegionFunction            | (True&)           | how to determine whether a point should be included                                |
| RotationAction            | "Fit"             | how to render after interactive rotation                                           |
| ScalingFunctions          | None              | how to scale individual coordinates                                                |
| SphericalRegion           | Automatic         | whether to make the circumscribing sphere fit in the final display area            |
| TextureCoordinateFunction | Automatic         | how to determine texture coordinates                                               |
| TextureCoordinateScaling  | True              | whether to scale arguments to TextureCoordinateFunction                            |
| Ticks                     | Automatic         | specification for ticks                                                            |
| TicksStyle                | {}                | style specification for ticks                                                      |
| TouchscreenAutoZoom       | False             | whether to zoom to fullscreen when activated on a touchscreen                      |
| ViewAngle                 | Automatic         | angle of the field of view                                                         |
| ViewCenter                | Automatic         | point to display at the center                                                     |
| ViewMatrix                | Automatic         | explicit transformation matrix                                                     |
| ViewPoint                 | {1.3, -2.4, 2.}   | viewing position                                                                   |
| ViewProjection            | Automatic         | projection method for rendering objects distant from the viewer                    |
| ViewRange                 | All               | range of viewing distances to include                                              |
| ViewVector                | Automatic         | position and direction of a simulated camera                                       |
| ViewVertical              | {0, 0, 1}         | direction to make vertical                                                         |
| WorkingPrecision          | MachinePrecision  | the precision used in internal computations                                        |

---

## Examples (130)

### Basic Examples (3)

Plot a spherical surface:

```wl
In[1]:= SphericalPlot3D[1 + 2Cos[2θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

Plot several spherical surfaces:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3Pi / 2}]

Out[1]= [image]
```

---

Style the resulting surface:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 5, {θ, 0, Pi}, {ϕ, 0, 2Pi}, PlotStyle -> Directive[Orange, Opacity[0.7], Specularity[White, 10]], Mesh -> None, PlotPoints -> 30]

Out[1]= [image]
```

### Scope (18)

#### Sampling (9)

More points are sampled when the function changes quickly:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> All]

Out[1]= [image]
```

---

The plot range is selected automatically:

```wl
In[1]:= SphericalPlot3D[1 / θ, {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

Ranges where the function becomes nonreal are excluded:

```wl
In[1]:= SphericalPlot3D[Sqrt[Sin[θ]], {θ, -Pi / 2, Pi / 2}, {ϕ, 0, 3Pi / 2}]

Out[1]= [image]
```

---

The surface is split when there are discontinuities in the function:

```wl
In[1]:= SphericalPlot3D[Floor[ϕ], {θ, 0, Pi}, {ϕ, 0, 3Pi}, Mesh -> None, ExclusionsStyle -> {None, Red}]

Out[1]= [image]
```

---

Use ``PlotPoints`` and ``MaxRecursion`` to control adaptive sampling:

```wl
In[1]:= Grid[Table[SphericalPlot3D[1 + Sin[5θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, PlotPoints -> pp, MaxRecursion -> mr, PlotRange -> All, Mesh -> None], {mr, {0, 2}}, {pp, {5, 10}}]]

Out[1]=
|         |         |
| ------- | ------- |
| [image] | [image] |
| [image] | [image] |
```

---

Use ``PlotRange`` to focus in on areas of interest:

```wl
In[1]:=
{SphericalPlot3D[1 + Sin[5θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}], 
	SphericalPlot3D[1 + Sin[5θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, PlotRange -> 1]}

Out[1]= [image]
```

---

Use ``Exclusions`` to remove points or split the resulting surface:

```wl
In[1]:= SphericalPlot3D[Round[θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, Exclusions -> {θ == 0.5, θ == 1.5, θ == 2.5}, Axes -> None, Mesh -> None]

Out[1]= [image]
```

---

Plot multiple surfaces:

```wl
In[1]:= SphericalPlot3D[{Sin[θ], 2Sin[θ]}, {θ, 0, Pi}, {ϕ, 0, Pi}, PlotStyle -> {Blue, Red}]

Out[1]= [image]
```

---

Use ``ScalingFunctions`` to reverse the direction of the ``x`` axis:

```wl
In[1]:= SphericalPlot3D[Floor[ϕ], {θ, 0, Pi}, {ϕ, 0, 3Pi}, ScalingFunctions -> {"Reverse", None, None}]

Out[1]= [image]
```

#### Presentation (9)

Provide explicit styling to different surfaces:

```wl
In[1]:= SphericalPlot3D[{ϕ, -ϕ}, {θ, -Pi / 2, Pi / 2}, {ϕ, 0, 3Pi / 2}, PlotStyle -> {Directive[Red, Specularity[White, 20]], Directive[Cyan, Specularity[White, 20]]}]

Out[1]= [image]
```

---

Add labels:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AxesLabel -> {x, y}, PlotLabel -> r == 1, AxesEdge -> {{-1, -1}, {1, -1}, {-1, -1}}]

Out[1]= [image]
```

---

Use legends for multiple surfaces:

```wl
In[1]:= SphericalPlot3D[{ϕ, -ϕ}, {θ, -Pi / 2, Pi / 2}, {ϕ, 0, 3Pi / 2}, PlotLegends -> "Expressions"]

Out[1]= [image]
```

---

Provide an interactive ``Tooltip`` for each surface:

```wl
In[1]:= SphericalPlot3D[{Tooltip[ϕ, r == ϕ], Tooltip[-ϕ, r == -ϕ]}, {θ, -Pi / 2, Pi / 2}, {ϕ, 0, 3Pi / 2}, PlotStyle -> {Green, Yellow}]

Out[1]= [image]
```

---

Create an overlay mesh:

```wl
In[1]:= SphericalPlot3D[Sin[θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 10, MeshStyle -> {Cyan, Directive[Green, Dashed]}, PlotStyle -> Gray]

Out[1]= [image]
```

---

Style the areas between mesh levels:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 5, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 25, MeshShading -> {{Red, Yellow}, {Pink, Orange}}]

Out[1]= [image]
```

---

Color by parameter values:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 5, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 25, ColorFunction -> Function[{x, y, z, t, θ, r}, Hue[θ ]]]

Out[1]= [image]
```

Use named color schemes:

```wl
In[2]:= SphericalPlot3D[1 + Sin[5ϕ] / 5, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 25, ColorFunction -> (ColorData["Rainbow"][#6]&)]

Out[2]= [image]
```

---

Remove portions of a curve or surface:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, RegionFunction -> Function[{x, y, z, t, θ, r}, Sin[8t]Sin[8θ] > 0.1], Mesh -> None, PlotStyle -> FaceForm[Red, Cyan], PlotPoints -> 35, BoundaryStyle -> Black]

Out[1]= [image]
```

---

Use a highly stylized theme:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 5, {θ, 0, Pi}, {ϕ, 0, 2Pi}, PlotTheme -> "Marketing"]

Out[1]= [image]
```

### Options (93)

#### Axes (3)

By default, ``Axes`` are drawn:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

Use ``Axes -> False`` to turn off axes:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Axes -> False]

Out[1]= [image]
```

---

Turn on each axis individually:

```wl
In[1]:= {SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Axes -> {False, False, True}], SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Axes -> {False, True, False}], SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Axes -> {True, False, False}]}

Out[1]= [image]
```

#### AxesLabel (3)

No axes labels are drawn by default:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

Place a label on the $z$ axis:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AxesLabel -> z]

Out[1]= [image]
```

---

Specify axes labels:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AxesLabel -> {x, y, z}]

Out[1]= [image]
```

#### AxesOrigin (2)

The position of the axes is determined automatically:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

Specify an explicit origin for the axes:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AxesOrigin -> {.9, -.9, .9}]

Out[1]= [image]
```

#### AxesStyle (4)

Change the style for the axes:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AxesStyle -> Red]

Out[1]= [image]
```

---

Specify the style of each axis:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AxesStyle -> {{Thick, Brown}, {Thick, Blue}, {Thick, Green}}]

Out[1]= [image]
```

---

Use different styles for the ticks and the axes:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AxesStyle -> Green, TicksStyle -> Black]

Out[1]= [image]
```

---

Use different styles for the labels and the axes:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AxesStyle -> Green, LabelStyle -> Black]

Out[1]= [image]
```

#### BoundaryStyle (4)

``BoundaryStyle`` automatically matches ``MeshStyle`` :

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, MeshStyle -> Red]

Out[1]= [image]

In[2]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, MeshStyle -> None]

Out[2]= [image]
```

---

Use a thick red boundary:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, BoundaryStyle -> Directive[Thick, Red]]

Out[1]= [image]
```

---

Boundaries are drawn where the surface is clipped by ``RegionFunction`` :

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, BoundaryStyle -> Red, Mesh -> None, RegionFunction -> Function[{x, y, z, θ, ϕ}, Sin[5ϕ]Sin[5θ] > 0]]

Out[1]= [image]
```

---

Boundaries are not drawn where the surface is clipped by ``Exclusions`` :

```wl
In[1]:= SphericalPlot3D[Floor[ϕ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, BoundaryStyle -> Red, Exclusions -> Table[ϕ == k, {k, 0, 6}]]

Out[1]= [image]
```

#### BoxRatios (2)

The default ``BoxRatios`` preserves the natural scale of the surface:

```wl
In[1]:= SphericalPlot3D[Sin[θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

Use specific ``BoxRatios`` :

```wl
In[1]:= SphericalPlot3D[Sin[θ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, BoxRatios -> {1, 1, 1}]

Out[1]= [image]
```

#### ColorFunction (5)

Color a surface by $x$, $y$, $z$, $\theta$, $\phi$, and $r$ parameters:

```wl
In[1]:= Table[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ColorFunction -> Function[{x, y, z, θ, ϕ, r}, Evaluate[f]], PlotLabel -> f, Axes -> None], {f, {Hue[x], Hue[y], Hue[z], Hue[θ], Hue[ϕ], Hue[r]}}]

Out[1]= [image]
```

---

Use ``ColorData`` for predefined color gradients:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ColorFunction -> Function[{x, y, z, θ, ϕ, r}, ColorData["Rainbow"][r]]]

Out[1]= [image]
```

---

Named color gradients color in the $z$ direction:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ColorFunction -> "Rainbow"]

Out[1]= [image]
```

---

``ColorFunction`` has higher priority than ``PlotStyle`` :

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ColorFunction -> "Rainbow", PlotStyle -> Directive[Opacity[0.5], Red]]

Out[1]= [image]
```

---

``ColorFunction`` has lower priority than ``MeshShading`` :

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ColorFunction -> Function[{x, y, z, θ, ϕ, r}, Hue[z]], MeshShading -> {{Automatic, None}, {None, Automatic}}]

Out[1]= [image]
```

#### ColorFunctionScaling (1)

Use scaled coordinates in the $\theta$ direction and unscaled coordinates in the $\phi$ direction:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ColorFunction -> Function[{x, y, z, θ, ϕ, r}, Hue[ϕ / (2Pi), 1, 1, 1 - θ]], ColorFunctionScaling -> {True, True, True, True, False, True}]

Out[1]= [image]
```

#### EvaluationMonitor (2)

Show where ``RevolutionPlot3D`` samples a function in $\{\theta ,\phi \}$ coordinates:

```wl
In[1]:= ListPlot[Reap[SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, EvaluationMonitor :> Sow[{θ, ϕ}]]][[-1, 1]]]

Out[1]= [image]
```

---

Count the number of sample points on the surface:

```wl
In[1]:= Block[{k = 0}, SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, EvaluationMonitor :> k++];k]

Out[1]= 2214
```

#### Exclusions (5)

This uses automatic methods to compute exclusions, in this case from branch cuts:

```wl
In[1]:= SphericalPlot3D[Im[θ Sqrt[Exp[I ϕ]]], {θ, 0, Pi}, {ϕ, 0, 2Pi}, PlotRange -> All]

Out[1]= [image]
```

---

Indicate that no exclusions should be computed:

```wl
In[1]:= SphericalPlot3D[Im[θ Sqrt[Exp[I ϕ]]], {θ, 0, Pi}, {ϕ, 0, 2Pi}, Exclusions -> None, PlotRange -> All]

Out[1]= [image]
```

---

Give a set of exclusions as an equation:

```wl
In[1]:= SphericalPlot3D[Tan[ϕ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, Exclusions -> {Cos[ϕ] == 0}, BoxRatios -> {1, 1, 1}]

Out[1]= [image]
```

---

Give three sets of exclusions:

```wl
In[1]:= SphericalPlot3D[θ Sin[ϕ] / Abs[Sin[ϕ]], {θ, 0, Pi}, {ϕ, 0, 2Pi}, Exclusions -> {ϕ == 0, ϕ == Pi, ϕ == 2Pi}]

Out[1]= [image]
```

---

Use both automatically computed and explicit exclusions:

```wl
In[1]:= SphericalPlot3D[Clip[Tan[θ]Tan[ϕ], {-5, 5}], {θ, 0, Pi}, {ϕ, 0, Pi}, Exclusions -> {Automatic, Cos[ϕ] == 0, Cos[θ] == 0}, PlotRange -> All]

Out[1]= [image]
```

#### ExclusionsStyle (2)

Style the boundary with a red line:

```wl
In[1]:= SphericalPlot3D[Floor[ϕ], {θ, 0, Pi}, {ϕ, 0, 3Pi}, Mesh -> None, ExclusionsStyle -> {None, Red}]

Out[1]= [image]
```

---

Style the boundary with a red line and the surface in between with yellow:

```wl
In[1]:= SphericalPlot3D[Floor[ϕ], {θ, 0, Pi}, {ϕ, 0, 3Pi}, Mesh -> None, ExclusionsStyle -> {Yellow, Red}]

Out[1]= [image]
```

#### ImageSize (7)

Use named sizes such as ``Tiny``, ``Small``, ``Medium`` and ``Large`` :

```wl
In[1]:= {SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ImageSize -> Tiny], SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ImageSize -> Small]}

Out[1]= [image]
```

---

Specify the width of the plot:

```wl
In[1]:= {SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ImageSize -> 150], SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AspectRatio -> 1.5, ImageSize -> 150]}

Out[1]= {[image], [image]}
```

Specify the height of the plot:

```wl
In[2]:= {SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ImageSize -> {Automatic, 150}], SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AspectRatio -> 2, ImageSize -> {Automatic, 150}]}

Out[2]= [image]
```

---

Allow the width and height to be up to a certain size:

```wl
In[1]:= {SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ImageSize -> UpTo[200]], SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AspectRatio -> 2, ImageSize -> UpTo[200]]}

Out[1]= {[image], [image]}
```

---

Specify the width and height for a graphic, padding with space if necessary:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ImageSize -> {200, 300}, Background -> LightBlue]

Out[1]= [image]
```

Setting ``AspectRatio -> Full`` will fill the available space:

```wl
In[2]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AspectRatio -> Full, ImageSize -> {200, 300}, Background -> LightBlue]

Out[2]= [image]
```

---

Use maximum sizes for the width and height:

```wl
In[1]:= {SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ImageSize -> {UpTo[150], UpTo[100]}], SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AspectRatio -> 2, ImageSize -> {UpTo[150], UpTo[100]}]}

Out[1]= [image]
```

---

Use ``ImageSize -> Full`` to fill the available space in an object:

```wl
In[1]:= Framed[Pane[SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ImageSize -> Full, Background -> LightBlue], {200, 200}]]

Out[1]= [image]
```

---

Specify the image size as a fraction of the available space:

```wl
In[1]:= Framed[Pane[SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}, AspectRatio -> Full, ImageSize -> {Scaled[0.5], Scaled[0.5]}, Background -> LightBlue], {200, 200}]]

Out[1]= [image]
```

#### MaxRecursion (1)

Refine the surface where it changes quickly:

```wl
In[1]:= Table[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> All, MaxRecursion -> r], {r, {0, 2}}]

Out[1]= [image]
```

#### Mesh (5)

Show the initial and final sampling meshes:

```wl
In[1]:= {SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> Full], SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> All]}

Out[1]= [image]
```

---

Use 10 mesh levels evenly spaced in the parameter directions:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 10]

Out[1]= [image]
```

---

Use a different number of mesh lines in different directions:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> {5, 20}]

Out[1]= [image]
```

---

Use an explicit list of values for the mesh in the $\theta$ parameter and no mesh in the $\phi$ parameter:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> {Range[0, Pi, Pi / 12], 0}]

Out[1]= [image]
```

---

Use explicit value and style for the $\theta$ mesh:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, MeshFunctions -> {#4&}, Mesh -> {{{Pi / 3, Thick}, {2Pi / 3, Directive[Thick, Red]}}}]

Out[1]= [image]
```

#### MeshFunctions (2)

Use a mesh evenly spaced in the $x$, $y$, $z$, $\theta$, $\phi$, and $r$ directions:

```wl
In[1]:= Table[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, BoundaryStyle -> None, Mesh -> 5, MeshFunctions -> {Function[{x, y, z, θ, ϕ, r}, Evaluate[f]]}, PlotLabel -> f, Axes -> None], {f, {x, y, z, θ, ϕ, r}}]

Out[1]= [image]
```

---

Show five mesh levels in the $\theta$ direction (red) and ten in the $\phi$ direction (blue):

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> {5, 10}, MeshFunctions -> {#4&, #5&}, MeshStyle -> {Red, Blue}]

Out[1]= [image]
```

#### MeshShading (7)

Alternate red and blue arcs in the $u$ direction:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 15, MeshFunctions -> {#5&}, MeshShading -> {Red, Blue}]

Out[1]= [image]
```

---

Use ``None`` to remove segments:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 15, MeshFunctions -> {#5&}, MeshShading -> {Red, None}]

Out[1]= [image]
```

---

``MeshShading`` has higher priority than ``PlotStyle`` for styling:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 15, MeshFunctions -> {#5&}, PlotStyle -> Green, MeshShading -> {Red, Blue}]

Out[1]= [image]
```

---

Use the ``PlotStyle`` for some segments by setting ``MeshShading`` to ``Automatic`` :

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 15, MeshFunctions -> {#5&}, PlotStyle -> Directive[Opacity[0.5], Yellow], MeshShading -> {Red, Automatic}]

Out[1]= [image]
```

---

``MeshShading`` can be used with ``ColorFunction`` :

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> 15, MeshFunctions -> {#5&}, ColorFunction -> Function[{x, y, z, θ, ϕ, r}, Hue[θ]], MeshShading -> {Black, Automatic}]

Out[1]= [image]
```

---

Fill between regions defined by multiple mesh functions:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, ColorFunction -> Function[{x, y, z, θ, ϕ, r}, Hue[θ]], Mesh -> 15, MeshShading -> {{Black, Automatic}, {None, Orange}}]

Out[1]= [image]
```

---

Use ``FaceForm`` to use different styles for different sides of a surface:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, MeshShading -> {{FaceForm[Red, None], FaceForm[None, Blue]}, {FaceForm[None, Cyan], FaceForm[Orange, None]}}]

Out[1]= [image]
```

#### MeshStyle (2)

Use a red mesh in the $x$ direction:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, MeshFunctions -> {#1&}, MeshStyle -> Red, BoundaryStyle -> None]

Out[1]= [image]
```

---

Use a red mesh in the $x$ direction and a blue mesh in the $y$ direction:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, MeshFunctions -> {#1&, #2&}, MeshStyle -> {Red, Blue}]

Out[1]= [image]
```

#### NormalsFunction (3)

Normals are automatically calculated:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None]

Out[1]= [image]
```

---

Use ``None`` to get flat shading for all the polygons:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, NormalsFunction -> None, Mesh -> None]

Out[1]= [image]
```

---

Vary the effective normals used on the surface:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None, NormalsFunction -> Function[{x, y, z, θ, ϕ, r}, RandomReal[{0, 2}, {3}]]]

Out[1]= [image]
```

#### PerformanceGoal (2)

Generate a higher-quality plot:

```wl
In[1]:= Timing[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, PerformanceGoal -> "Quality"]]

Out[1]= [image]
```

---

Emphasize performance, possibly at the cost of quality:

```wl
In[1]:= Timing[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, PerformanceGoal -> "Speed"]]

Out[1]= {0.020963, [image]}
```

#### PlotLegends (3)

Use placeholders to identify plot styles:

```wl
In[1]:= SphericalPlot3D[{Sin[θ], 2Sin[θ], 3Sin[θ]}, {θ, 0, Pi}, {ϕ, 0, 3Pi / 2}, PlotLegends -> Automatic]

Out[1]= [image]
```

Use specific labels:

```wl
In[2]:= SphericalPlot3D[{Sin[θ], 2Sin[θ], 3Sin[θ]}, {θ, 0, Pi}, {ϕ, 0, 3Pi / 2}, PlotLegends -> {"one", "two", "three"}]

Out[2]= [image]
```

Use the expressions as legends:

```wl
In[3]:= SphericalPlot3D[{Sin[θ], 2Sin[θ], 3Sin[θ]}, {θ, 0, Pi}, {ϕ, 0, 3Pi / 2}, PlotLegends -> "Expressions"]

Out[3]= [image]
```

---

Use ``Placed`` to control legend position:

```wl
In[1]:= SphericalPlot3D[{Sin[θ], 2Sin[θ], 3Sin[θ]}, {θ, 0, Pi}, {ϕ, 0, 3Pi / 2}, PlotLegends -> Placed[{"one", "two", "three"}, Below]]

Out[1]= [image]
```

---

```wl
In[1]:= SphericalPlot3D[{Sin[θ], 2Sin[θ], 3Sin[θ]}, {θ, 0, Pi}, {ϕ, 0, 3Pi / 2}, PlotLegends -> SwatchLegend[{"one", "two", "three"}, LegendFunction -> "Frame"]]

Out[1]= [image]
```

#### PlotPoints (1)

Use more initial points to get a smoother plot:

```wl
In[1]:= Table[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, PlotPoints -> i, MaxRecursion -> 0, Mesh -> None, Axes -> None], {i, {5, 10, 15, 25}}]

Out[1]= {[image], [image], [image], [image]}
```

#### PlotStyle (3)

Use different style directives:

```wl
In[1]:= Table[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, PlotStyle -> ps], {ps, {Red, Directive[Orange, Specularity[White, 50]], Opacity[0.3], Directive[Purple, Opacity[0.5]]}}]

Out[1]= [image]
```

---

Explicitly specify the style for different surfaces:

```wl
In[1]:= SphericalPlot3D[{1, 2 + Sin[5ϕ] / 10}, {θ, 0, Pi}, {ϕ, 0, 3Pi / 2}, PlotStyle -> {Yellow, Red}]

Out[1]= [image]
```

---

Use a different style inside the surface:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 3Pi / 2}, PlotStyle -> FaceForm[Red, Blue]]

Out[1]= [image]
```

#### PlotTheme (3)

Use a theme with detailed ticks, grid lines, and legends:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5 ϕ] Sin[10 θ] / 10, {θ, 0, π}, {ϕ, 0, 2π}, PlotTheme -> "Detailed"]

Out[1]= [image]
```

---

Turn off the mesh lines:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5 ϕ] Sin[10 θ] / 10, {θ, 0, π}, {ϕ, 0, 2π}, PlotTheme -> "Detailed", Mesh -> None]

Out[1]= [image]
```

---

Create a thick surface for 3D printing:

```wl
In[1]:= SphericalPlot3D[ϕ, {θ, 0, Pi}, {ϕ, 0, 3Pi}, PlotTheme -> "ThickSurface"]

Out[1]= [image]
```

#### RegionFunction (2)

Select a region in $x$, $y$, $z$, $\theta$, $\phi$, and $r$:

```wl
In[1]:= Table[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, RegionFunction -> Function[{x, y, z, θ, ϕ, r}, Evaluate[f]], PlotLabel -> f, Mesh -> None, BoundaryStyle -> Black, PlotRange -> 1.1, Axes -> None], {f, {0 < x < 1, 0 < y < 1, 0 < z < 1, 0 < θ < 1, 0 < ϕ < Pi / 2, 1 / 2 < r < 1}}]

Out[1]= [image]
```

---

Select a region in parameter space:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, RegionFunction -> (Sin[5(#4 + #5)] > 0&), Mesh -> None, BoundaryStyle -> Black]

Out[1]= [image]
```

#### ScalingFunctions (3)

By default, plots have linear scales in all directions:

```wl
In[1]:= SphericalPlot3D[θ ϕ, {θ, 0, Pi}, {ϕ, 0, 3Pi}]

Out[1]= [image]
```

---

Use a shifted log scale to show a function with negative values:

```wl
In[1]:= SphericalPlot3D[θ ϕ, {θ, 0, Pi}, {ϕ, 0, 3Pi}, ScalingFunctions -> {None, None, "SignedLog"}, BoxRatios -> {1, 1, 1}]

Out[1]= [image]
```

---

Use ``ScalingFunctions`` to reverse the coordinate direction in the $z$ direction:

```wl
In[1]:= SphericalPlot3D[θ ϕ, {θ, 0, Pi}, {ϕ, 0, 3Pi}, ScalingFunctions -> {None, None, "Reverse"}]

Out[1]= [image]
```

#### TextureCoordinateFunction (4)

Textures use scaled $\theta$ and $\phi$ parameters by default:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None, PlotStyle -> Texture[ExampleData[{"ColorTexture", "MultiSpiralsPattern"}]]]

Out[1]= [image]
```

---

Use the $x$ and $y$ coordinates:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None, TextureCoordinateFunction -> ({#1, #2}&), PlotStyle -> Texture[ExampleData[{"ColorTexture", "MultiSpiralsPattern"}]]]

Out[1]= [image]
```

---

Use unscaled coordinates:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None, TextureCoordinateScaling -> False, PlotStyle -> Texture[ExampleData[{"ColorTexture", "MultiSpiralsPattern"}]]]

Out[1]= [image]
```

---

Use textures to highlight how parameters map onto a surface:

```wl
In[1]:= texture = ArrayPlot[{{1, 1, 1, 2, 1, 1}, {2, 0, 0, 2, 0, 0}, {2, 0, 0, 2, 0, 0}, {2, 1, 1, 1, 1, 1}, {2, 0, 0, 2, 0, 0}, {2, 0, 0, 2, 0, 0}}, ColorRules -> {1 -> Red, 2 -> Blue, 0 -> White}, Frame -> False, PlotRangePadding -> None, ImagePadding -> None, ImageSize -> 100]

Out[1]= [image]

In[2]:= SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None, TextureCoordinateScaling -> False, PlotStyle -> Texture[texture]]

Out[2]= [image]
```

#### TextureCoordinateScaling (1)

Use scaled or unscaled coordinates for textures:

```wl
In[1]:= texture = ArrayPlot[{{1, 1, 1, 2, 1, 1}, {2, 0, 0, 2, 0, 0}, {2, 0, 0, 2, 0, 0}, {2, 1, 1, 1, 1, 1}, {2, 0, 0, 2, 0, 0}, {2, 0, 0, 2, 0, 0}}, ColorRules -> {1 -> Red, 2 -> Blue, 0 -> White}, Frame -> False, PlotRangePadding -> None, ImagePadding -> None, ImageSize -> 100]

Out[1]= [image]

In[2]:= Table[SphericalPlot3D[1 + Sin[5ϕ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None, TextureCoordinateScaling -> s, PlotStyle -> Texture[texture], PlotLabel -> s], {s, {True, False}}]

Out[2]= [image]
```

#### Ticks (6)

Ticks are placed automatically in each plot:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}]

Out[1]= [image]
```

---

Use ``Ticks -> None`` to not draw any tick marks:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}, Ticks -> None]

Out[1]= [image]
```

---

Place tick marks at specific positions:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}, Ticks -> {{-2.5, 0, 2.5}, {-2.5, 0, 2.5}, {-2.5, 0, 2.5}}]

Out[1]= [image]
```

---

Draw tick marks at the specified positions with the specified labels:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}, Ticks -> {{{-2.5, -a}, {0, 0}, {2.5, a}}, {{-2.5, -a}, {0, 0}, {2.5, a}}, {{-2.5, -a}, {0, 0}, {2.5, a}}}]

Out[1]= [image]
```

---

Specify tick marks with scaled lengths:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}, Ticks -> {{{-2.5, -a, .18}, {0, 0, .2}, {2.5, a, .05}}, {{-2.5, -a, .05}, {0, 0, .05}, {2.5, a, .05}}, {{-2.5, -a, .1}, {0, 0, .15}, {2.5, a, .15}}}]

Out[1]= [image]
```

---

Customize each tick with position, length, labeling and styling:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}, Ticks -> {{{-2.5, -a, .18, Directive[Red, Dashed, Thick]}, {0, 0, .2, Directive[Red]}, {2.5, a, .05, Directive[Red, Thick]}}, {{-2.5, -a, .05, Directive[Blue, Thick]}, {0, 0, .05, Directive[Blue, Thick]}, {2.5, a, .05, Directive[Blue, Thick]}}, {{-2.5, -a, .1, Directive[Darker@Green, Thick]}, {0, 0, .15, Directive[Darker@Green, Dashed, Thick]}, {2.5, a, .15, Directive[Darker@Green, Dashed]}}}]

Out[1]= [image]
```

#### TicksStyle (3)

By default, the ticks and tick labels use the same styles as the axis:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}, AxesStyle -> Directive[Red, Thick]]

Out[1]= [image]
```

---

Specify the overall tick style, including the tick labels:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}, TicksStyle -> Directive[Red, Thick]]

Out[1]= [image]
```

---

Specify the overall tick style for each of the axes:

```wl
In[1]:= SphericalPlot3D[{1, 2, 3}, {θ, 0, Pi}, {ϕ, 0, 3 Pi / 2}, TicksStyle -> {Directive[Blue, Thick], Directive[Red, Thick], Directive[Brown, Thick]}]

Out[1]= [image]
```

#### WorkingPrecision (2)

Evaluate functions using machine-precision arithmetic:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5(θ + 10 ^ 16)], {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

Evaluate functions using arbitrary-precision arithmetic:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5(θ + 10 ^ 16)], {θ, 0, Pi}, {ϕ, 0, 2Pi}, WorkingPrecision -> 20]

Out[1]= [image]
```

### Applications (5)

Plot a sphere:

```wl
In[1]:= SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

A spiraling shell:

```wl
In[1]:= SphericalPlot3D[ϕ, {θ, 0, Pi}, {ϕ, 0, 3Pi}]

Out[1]= [image]
```

---

An oscillation around a sphere:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5ϕ]Sin[10θ] / 10, {θ, 0, Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]
```

---

Plot an eigenfunction to the Laplace equation in spherical coordinates:

```wl
In[1]:= GraphicsGrid@Table[SphericalPlot3D[Evaluate@Abs@SphericalHarmonicY[l, m, θ, ϕ], {θ, 0, Pi}, {ϕ, 0, 2Pi}, PlotRange -> 0.6, Mesh -> None, Boxed -> False, Axes -> None], {l, 0, 3}, {m, 0, l}]

Out[1]= [image]
```

---

Plot the absolute value and color by phase:

```wl
In[1]:= SphericalPlot3D[Evaluate@Abs@SphericalHarmonicY[5, 2, θ, ϕ], {θ, 0, π}, {ϕ, 0, 2π}, Mesh -> None, ColorFunction -> Function[{x, y, z, θ, ϕ, r}, Evaluate[Hue@Rescale[Arg@SphericalHarmonicY[5, 2, θ, ϕ], {-π, π}]]], ColorFunctionScaling -> False, PlotPoints -> 35]

Out[1]= [image]
```

### Properties & Relations (8)

``SphericalPlot3D`` is a special case of ``ParametricPlot3D`` :

```wl
In[1]:= SphericalPlot3D[θ ^ 2, {θ, 0, Pi}, {ϕ, 0, 5Pi / 3}]

Out[1]= [image]

In[2]:= ParametricPlot3D[{θ ^ 2 Sin[θ]Cos[ϕ], θ ^ 2 Sin[θ]Sin[ϕ], θ ^ 2 Cos[θ]}, {θ, 0, Pi}, {ϕ, 0, 5Pi / 3}]

Out[2]= [image]
```

---

Use ``RevolutionPlot3D`` for revolved surfaces and cylindrical coordinates:

```wl
In[1]:= RevolutionPlot3D[t ^ 2, {t, 0, 2}]

Out[1]= [image]

In[2]:= RevolutionPlot3D[Sin[t] Sin[5θ], {t, 0, Pi}, {θ, 0, 2Pi}]

Out[2]= [image]
```

---

Use ``ParametricPlot3D`` for arbitrary curves and surfaces in three dimensions:

```wl
In[1]:= ParametricPlot3D[Evaluate[{Cos[u], Sin[u], -u / 5} / Sqrt[1 + (u / 5) ^ 2]], {u, -20, 20}]

Out[1]= [image]

In[2]:= ParametricPlot3D[{u - u ^ 3 / 3 + u v ^ 2, -v - u ^ 2v + v ^ 3 / 3, u ^ 2 - v ^ 2}, {u, -1.5, 1.5}, {v, -1.5, 1.5}]

Out[2]= [image]
```

---

Use ``PolarPlot`` for curves in polar coordinates:

```wl
In[1]:= PolarPlot[Sin[4t], {t, 0, 2Pi}]

Out[1]= [image]
```

---

Use ``ParametricPlot`` for curves and regions in two dimensions:

```wl
In[1]:=
{ParametricPlot[{u Cos[u], u Sin[u]}, {u, 0, 4Pi}], 
	ParametricPlot[{(u + v) Cos[u], (u + v) Sin[u]}, {u, 0, 4Pi}, {v, 0, 3}]}

Out[1]= [image]
```

---

Use ``ContourPlot3D`` and ``RegionPlot3D`` for implicitly defined surfaces and regions:

```wl
In[1]:= ContourPlot3D[x ^ 2 + y ^ 2 == z ^ 2, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]

Out[1]= [image]

In[2]:= RegionPlot3D[x ^ 2 + y ^ 2 < z ^ 2, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]

Out[2]= [image]
```

---

Use ``ListPlot3D`` and ``ListSurfacePlot3D`` for data:

```wl
In[1]:= ListPlot3D[Table[Sin[x y], {x, 0, 3, 0.1}, {y, 0, 3, 0.1}]]

Out[1]= [image]

In[2]:= ListSurfacePlot3D[Table[{x = RandomReal[{-1, 1}], y = RandomReal[{-1, 1}], RandomChoice[{-1, 1}]Sqrt[1 - x ^ 2 - y ^ 2]}, {1000}]]

Out[2]= [image]
```

---

Use ``Sphere`` for generating spheres:

```wl
In[1]:= Graphics3D[Table[{RGBColor[i, j, k], Sphere[{i, j, k}, 0.1]}, {i, 0, 1, 0.2}, {j, 0, 1, 0.2}, {k, 0, 1, 0.2}], Lighting -> "Neutral"]

Out[1]= [image]
```

### Possible Issues (1)

Surfaces that have multiple coverings may exhibit unusual behavior:

```wl
In[1]:= {SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, -Pi, 7Pi / 4}, PlotStyle -> Opacity[0.5]], SphericalPlot3D[1, {θ, 0, Pi}, {ϕ, -Pi, 7Pi / 4}, ColorFunction -> Function[{x, y, z, θ, ϕ, r}, Hue[ϕ]]]}

Out[1]= [image]
```

### Neat Examples (2)

An oscillating spherical surface:

```wl
In[1]:= SphericalPlot3D[1 + Sin[5 ϕ] Sin[10 θ] / 10, {θ, 0, π}, {ϕ, 0, 2π}, ColorFunction -> (ColorData["Rainbow"][#6]&), Mesh -> None, PlotPoints -> 25, Boxed -> False, Axes -> False]

Out[1]= [image]
```

---

An oscillating piecewise spherical surface:

```wl
In[1]:= SphericalPlot3D[1 + FractionalPart[10ϕ / (2Pi)] / 5, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None, ExclusionsStyle -> {None, Red}, PlotStyle -> Opacity[0.6]]

Out[1]= [image]

In[2]:= SphericalPlot3D[1 + FractionalPart[10θ / Pi] / 5, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Mesh -> None, ExclusionsStyle -> {None, Red}, PlotStyle -> Opacity[0.6]]

Out[2]= [image]
```

## See Also

* [`RevolutionPlot3D`](https://reference.wolfram.com/language/ref/RevolutionPlot3D.en.md)
* [`ParametricPlot3D`](https://reference.wolfram.com/language/ref/ParametricPlot3D.en.md)
* [`PolarPlot`](https://reference.wolfram.com/language/ref/PolarPlot.en.md)
* [`Sphere`](https://reference.wolfram.com/language/ref/Sphere.en.md)
* [`RotationMatrix`](https://reference.wolfram.com/language/ref/RotationMatrix.en.md)

## Tech Notes

* [Some Special Plots](https://reference.wolfram.com/language/tutorial/GraphicsAndSound.en.md#31896)

## Related Guides

* [Function Visualization](https://reference.wolfram.com/language/guide/FunctionVisualization.en.md)
* [Angles and Polar Coordinates](https://reference.wolfram.com/language/guide/AnglesAndPolarCoordinates.en.md)

## History

* [Introduced in 2007 (6.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn60.en.md) \| [Updated in 2008 (7.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn70.en.md) ▪ [2010 (8.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn80.en.md) ▪ [2014 (10.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn100.en.md) ▪ [2016 (11.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn110.en.md) ▪ [2022 (13.1)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn131.en.md)