---
title: "PolarPlot"
language: "en"
type: "Symbol"
summary: "PolarPlot[r, {\\[Theta], \\[Theta]min, \\[Theta]max}] generates a polar plot of a curve with radius r as a function of angle \\[Theta]. PolarPlot[{r1, r2, ...}, {\\[Theta], \\[Theta]min, \\[Theta]max}] makes a polar plot of curves with radius functions r1, r2, ...."
keywords: 
- Archimedean spiral
- Guilloche
- logarithmic spiral
- polar coordinates
- spirals
- POLAR_CONTOUR
- polar
- polarp
- ezpolar
- polar
canonical_url: "https://reference.wolfram.com/language/ref/PolarPlot.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: "ListPolarPlot"
    link: "https://reference.wolfram.com/language/ref/ListPolarPlot.en.md"
  - 
    title: "ParametricPlot"
    link: "https://reference.wolfram.com/language/ref/ParametricPlot.en.md"
  - 
    title: "RevolutionPlot3D"
    link: "https://reference.wolfram.com/language/ref/RevolutionPlot3D.en.md"
  - 
    title: "SphericalPlot3D"
    link: "https://reference.wolfram.com/language/ref/SphericalPlot3D.en.md"
  - 
    title: "PieChart"
    link: "https://reference.wolfram.com/language/ref/PieChart.en.md"
  - 
    title: "SectorChart"
    link: "https://reference.wolfram.com/language/ref/SectorChart.en.md"
  - 
    title: "RadialAxisPlot"
    link: "https://reference.wolfram.com/language/ref/RadialAxisPlot.en.md"
related_tutorials: 
  - 
    title: "Some Special Plots"
    link: "https://reference.wolfram.com/language/tutorial/GraphicsAndSound.en.md#31896"
---
# PolarPlot

PolarPlot[r, {θ, θmin, θmax}] generates a polar plot of a curve with radius r as a function of angle θ.

PolarPlot[{r1, r2, …}, {θ, θmin, θmax}] makes a polar plot of curves with radius functions r1, r2, ….

## Details and Options

* The angle $$\theta$$ is measured in radians, counterclockwise from the positive $x$ axis.

* The $x$, $y$ position corresponding to $r$, $\theta$ is $r \cos (\theta )$, $r \sin (\theta )$. The value of $\theta$ need not be between $0$ and $2 \pi$.

* ``PolarPlot`` treats the variable $$\theta$$ as local, effectively using ``Block``.

* ``PolarPlot`` has attribute ``HoldAll`` and evaluates functions only after assigning specific numerical values to $$\theta$$.

* In some cases, it may be more efficient to use ``Evaluate`` to evaluate functions symbolically before specific numerical values are assigned to $$\theta$$.

* No curve is drawn in any region where a function evaluates to ``None``.

* The following wrappers ``w`` can be used for ``r``:

|                         |                                                 |
| ----------------------- | ----------------------------------------------- |
| Annotation[r, label]    | provide an annotation for r                     |
| Button[r, action]       | evaluate action when the curve for r is clicked |
| Callout[r, label]       | label the function with a callout               |
| Callout[r, label, pos]  | place the callout at relative position pos      |
| EventHandler[r, events] | define a general event handler for r            |
| Hyperlink[r, uri]       | make the function a hyperlink                   |
| Labeled[r, label]       | label the function                              |
| Labeled[r, label, pos]  | place the label at relative position pos        |
| Legended[r, label]      | identify the function in a legend               |
| PopupWindow[r, cont]    | attach a popup window to the function           |
| StatusArea[r, label]    | display in the status area on mouseover         |
| Style[r, styles]        | show the function using the specified styles    |
| Tooltip[r, label]       | attach a tooltip to the function                |
| Tooltip[r]              | use functions as tooltips                       |

* Wrappers ``w`` can be applied at multiple levels:

|                |                             |
| -------------- | --------------------------- |
| w[r]           | wrap r                      |
| w[{r1, r2, …}] | wrap a collection of curves |
| w1[w2[…]]      | use nested wrappers         |

* ``Callout``, ``Labeled`` and ``Placed`` can use the following positions ``pos``:

|                             |                                                            |
| --------------------------- | ---------------------------------------------------------- |
| Automatic                   | automatically placed labels                                |
| Above, Below, Before, After | positions around the curve                                 |
| u                           | near the curve at parameter u                              |
| {x, y}                      | position near {x, y}                                       |
| Scaled[s]                   | scaled position s along the curve                          |
| {s, Above}, {s, Below}, …   | relative position at position s along the curve            |
| {pos, epos}                 | epos in label placed at relative position pos of the curve |

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

|                       |                   |                                                             |
| :-------------------- | :---------------- | :---------------------------------------------------------- |
| Axes                  | True              | whether to draw axes                                        |
| AxesOrigin            | {0, 0}            | the origin where axes cross                                 |
| ColorFunction         | Automatic         | how to determine the coloring of curves                     |
| ColorFunctionScaling  | True              | whether to scale arguments to ColorFunction                 |
| EvaluationMonitor     | None              | expression to evaluate at every function evaluation         |
| Exclusions            | Automatic         | points in $\theta$ to exclude |
| ExclusionsStyle       | None              | what to draw at excluded points                             |
| LabelingSize          | Automatic         | maximum size of callouts and labels                         |
| MaxRecursion          | Automatic         | the maximum number of recursive subdivisions allowed        |
| Mesh                  | None              | how many mesh points to draw on each curve                  |
| MeshFunctions         | {#3&}             | how to determine the placement of mesh points               |
| MeshShading           | None              | how to shade regions between mesh points                    |
| MeshStyle             | Automatic         | the style for mesh points                                   |
| Method                | Automatic         | the method to use for refining curves                       |
| PerformanceGoal       | \$PerformanceGoal | aspects of performance to try to optimize                   |
| PlotLabels            | None              | labels to use for curves                                    |
| PlotLegends           | None              | legends for curves                                          |
| PlotPoints            | Automatic         | initial number of sample points                             |
| PlotRange             | Automatic         | the range of values to include                              |
| PlotRangeClipping     | True              | whether to clip at the plot range                           |
| PlotStyle             | Automatic         | graphics directives to specify the style for each curve     |
| PlotTheme             | \$PlotTheme       | overall theme for the plot                                  |
| PolarAxes             | False             | whether to draw polar axes                                  |
| PolarAxesOrigin       | Automatic         | where to draw polar axes                                    |
| PolarGridLines        | None              | polar gridlines to draw                                     |
| PolarTicks            | Automatic         | polar axes ticks                                            |
| RegionFunction        | (True&)           | how to determine whether a point should be included         |
| ScalingFunctions      | None              | how to scale individual coordinates                         |
| WorkingPrecision      | MachinePrecision  | the precision used in internal computations                 |

* Typical settings for ``PlotLegends`` include:

|                  |                                    |
| ---------------- | ---------------------------------- |
| None             | no legend                          |
| Automatic        | automatically determine legend     |
| "Expressions"    | use r1, r2, … as legend labels     |
| {lbl1, lbl2, …}  | use lbl1, lbl2, … as legend labels |
| Placed[lspec, …] | specify placement for legend       |

* ``ColorData["DefaultPlotColors"]`` gives the default sequence of colors used by ``PlotStyle``.

* ``PolarPlot`` initially evaluates functions at a number of equally spaced sample points specified by ``PlotPoints``. Then it uses an adaptive algorithm to choose additional sample points, subdividing a given interval at most ``MaxRecursion`` times.

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

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

* With ``Mesh -> All``, ``PolarPlot`` will explicitly draw a point at every position on each curve where each function was sampled.

* The arguments supplied to functions in ``MeshFunctions`` and ``RegionFunction`` are ``x``, ``y``, ``θ``, ``r``. Functions in ``ColorFunction`` are by default supplied with scaled versions of these arguments.

* The functions are evaluated all along each curve.

* With the default settings ``Exclusions -> Automatic`` and ``ExclusionsStyle -> None``, ``PolarPlot`` breaks curves at discontinuities it detects. ``Exclusions -> None`` joins across discontinuities.

* ``PolarPlot`` normally returns ``Graphics[{Line[…], …}]``.

* Possible settings for ``ScalingFunctions`` include:

|                  |                     |
| ---------------- | ------------------- |
| sr               | scale the r axis    |
| {sx, sy, sθ, sr} | scale x, y, θ and r |

* 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                    |

* Scaling ``θ`` affects how the plot is sampled, but not the overall appearance of the plot.

* In general, you cannot scale both ``x`` or ``y`` and ``r`` simultaneously.

### 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                                                               |
| AxesLabel              | None              | axes labels                                                                        |
| AxesOrigin             | {0, 0}            | the origin where axes cross                                                        |
| AxesStyle              | {}                | style specifications for the 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                                          |
| ColorFunction          | Automatic         | how to determine the coloring of curves                                            |
| ColorFunctionScaling   | True              | whether to scale arguments to ColorFunction                                        |
| ContentSelectable      | Automatic         | whether to allow contents to be selected                                           |
| CoordinatesToolOptions | Automatic         | detailed behavior of the coordinates tool                                          |
| Epilog                 | {}                | primitives rendered after the main plot                                            |
| EvaluationMonitor      | None              | expression to evaluate at every function evaluation                                |
| Exclusions             | Automatic         | points in $\theta$ to exclude                        |
| ExclusionsStyle        | None              | what to draw at excluded points                                                    |
| FormatType             | TraditionalForm   | the default format type for text                                                   |
| Frame                  | False             | whether to put a frame around the plot                                             |
| FrameLabel             | None              | frame labels                                                                       |
| FrameStyle             | {}                | style specifications for the frame                                                 |
| FrameTicks             | Automatic         | frame ticks                                                                        |
| FrameTicksStyle        | {}                | style specifications for frame ticks                                               |
| GridLines              | None              | grid lines to draw                                                                 |
| GridLinesStyle         | {}                | style specifications for grid lines                                                |
| ImageMargins           | 0.                | the margins to leave around the graphic                                            |
| ImagePadding           | All               | what extra padding to allow for labels etc.                                        |
| ImageSize              | Automatic         | the absolute size at which to render the graphic                                   |
| LabelingSize           | Automatic         | maximum size of callouts and labels                                                |
| LabelStyle             | {}                | style specifications for labels                                                    |
| MaxRecursion           | Automatic         | the maximum number of recursive subdivisions allowed                               |
| Mesh                   | None              | how many mesh points to draw on each curve                                         |
| MeshFunctions          | {#3&}             | how to determine the placement of mesh points                                      |
| MeshShading            | None              | how to shade regions between mesh points                                           |
| MeshStyle              | Automatic         | the style for mesh points                                                          |
| Method                 | Automatic         | the method to use for refining curves                                              |
| PerformanceGoal        | \$PerformanceGoal | aspects of performance to try to optimize                                          |
| PlotLabel              | None              | an overall label for the plot                                                      |
| PlotLabels             | None              | labels to use for curves                                                           |
| PlotLegends            | None              | legends for curves                                                                 |
| PlotPoints             | Automatic         | initial number of sample points                                                    |
| PlotRange              | Automatic         | the range of values to include                                                     |
| PlotRangeClipping      | True              | whether to clip at the plot range                                                  |
| PlotRangePadding       | Automatic         | how much to pad the range of values                                                |
| PlotRegion             | Automatic         | the final display region to be filled                                              |
| PlotStyle              | Automatic         | graphics directives to specify the style for each curve                            |
| PlotTheme              | \$PlotTheme       | overall theme for the plot                                                         |
| PolarAxes              | False             | whether to draw polar axes                                                         |
| PolarAxesOrigin        | Automatic         | where to draw polar axes                                                           |
| PolarGridLines         | None              | polar gridlines to draw                                                            |
| PolarTicks             | Automatic         | polar axes ticks                                                                   |
| PreserveImageOptions   | Automatic         | whether to preserve image options when displaying new versions of the same graphic |
| Prolog                 | {}                | primitives rendered before the main plot                                           |
| RegionFunction         | (True&)           | how to determine whether a point should be included                                |
| RotateLabel            | True              | whether to rotate y labels on the frame                                            |
| ScalingFunctions       | None              | how to scale individual coordinates                                                |
| Ticks                  | Automatic         | axes ticks                                                                         |
| TicksStyle             | {}                | style specifications for axes ticks                                                |
| WorkingPrecision       | MachinePrecision  | the precision used in internal computations                                        |

---

## Examples (171)

### Basic Examples (3)

Make a polar plot:

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

Out[1]= [image]
```

---

Make several polar plots:

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

Out[1]= [image]
```

---

Style the curves:

```wl
In[1]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotStyle -> {Green, Directive[Dashed, Thick, Orange]}]

Out[1]= [image]
```

### Scope (23)

#### Sampling (6)

More points are sampled when the function changes quickly:

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

Out[1]= [image]
```

---

The plot range is selected automatically:

```wl
In[1]:= PolarPlot[Tan[θ], {θ, 0, 2Pi}]

Out[1]= [image]
```

---

Ranges where the function becomes nonreal are excluded:

```wl
In[1]:= {PolarPlot[Sqrt[Sin[2θ]], {θ, 0, 2Pi}], PolarPlot[Im[Sqrt[Sin[2θ]]], {θ, 0, 2Pi}]}

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

---

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

```wl
In[1]:= PolarPlot[Floor[θ], {θ, 0, 10}]

Out[1]= [image]
```

---

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

```wl
In[1]:= Grid[Table[PolarPlot[1, {θ, 0, 2Pi}, PlotPoints -> pp, MaxRecursion -> mr], {mr, {0, 2}}, {pp, {5, 10}}]]

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

---

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

```wl
In[1]:= Table[PolarPlot[Exp[θ], {θ, 0, 10}, PlotRange -> pr], {pr, {10, 50, 250}}]

Out[1]= [image]
```

#### Labeling and Legending (7)

Use ``Callout`` to add the expressions as a label:

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

Out[1]= [image]
```

Use any text as a label:

```wl
In[2]:= PolarPlot[Callout[Sin[2t], "label"], {t, 0, 2Pi}]

Out[2]= [image]
```

---

Place the label along the curve:

```wl
In[1]:= Table[PolarPlot[Callout[Sin[3t], "label", i], {t, 0, 2Pi}, PlotLabel -> i], {i, {Pi / 4, 3Pi / 4}}]

Out[1]= [image]
```

---

Place the label at a scaled position:

```wl
In[1]:= Table[PolarPlot[Callout[Sin[3t], "label", Scaled[i]], {t, 0, 2Pi}, PlotLabel -> i], {i, {1 / 8, 3 / 8}}]

Out[1]= [image]
```

---

Place the labels relative to the inside of the curve:

```wl
In[1]:= Table[PolarPlot[Callout[Sin[3t], "label", pos], {t, 0, 2Pi}, PlotLabel -> pos], {pos, {Left, Right}}]

Out[1]= [image]
```

Place the labels relative to the outside of the curve:

```wl
In[2]:= Table[PolarPlot[Callout[Sin[3t], "label", pos], {t, 0, 2Pi}, PlotLabel -> pos], {pos, {Before, After}}]

Out[2]= [image]
```

---

Label the curve with ``PlotLabels`` :

```wl
In[1]:= PolarPlot[Cos[3t], {t, 0, 2Pi}, PlotLabels -> "Expressions"]

Out[1]= [image]
```

Label multiple curves:

```wl
In[2]:= PolarPlot[{Cos[t], Sin[t]}, {t, 0, Pi}, PlotLabels -> "Expressions"]

Out[2]= [image]
```

---

Use a scaled position:

```wl
In[1]:= PolarPlot[Callout[Sqrt[t], "label", Scaled[0.8]], {t, 0, 2Pi}]

Out[1]= [image]
```

Specify the text position relative to the point:

```wl
In[2]:= PolarPlot[Callout[Sqrt[t], "label", {Scaled[0.8], Below}], {t, 0, 2Pi}]

Out[2]= [image]
```

---

Specify the label at ``{x, y}`` position:

```wl
In[1]:= PolarPlot[Callout[Sqrt[t], "label", {1.5, -1}], {t, 0, 2Pi}]

Out[1]= [image]
```

#### Presentation (10)

Multiple curves are automatically colored to be distinct:

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

Out[1]= [image]
```

---

Provide explicit styling to different curves and regions:

```wl
In[1]:= PolarPlot[{1, 2, 3}, {θ, 0, 2Pi}, PlotStyle -> {Blue, Directive[Red, Dashed], Directive[Purple, Thick]}]

Out[1]= [image]
```

---

Add labels:

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, AxesLabel -> {x, y}, PlotLabel -> Sin[4θ]]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[{Tooltip[1], Tooltip[2], Tooltip[3]}, {θ, 0, 2Pi}]

Out[1]= [image]
```

---

Create an overlay mesh:

```wl
In[1]:= PolarPlot[θ, {θ, 0, 4Pi}, Mesh -> 20]

Out[1]= [image]
```

---

Style the areas between mesh levels:

```wl
In[1]:= PolarPlot[θ, {θ, 0, 4Pi}, PlotStyle -> Thick, Mesh -> 20, MeshShading -> {Red, Orange, Yellow}]

Out[1]= [image]
```

---

Color by parameter values:

```wl
In[1]:= PolarPlot[θ, {θ, 0, 4Pi}, PlotStyle -> Thick, ColorFunction -> Function[{x, y, θ}, Hue[θ / (2Pi)]], ColorFunctionScaling -> False]

Out[1]= [image]
```

---

Legend multiple curves:

```wl
In[1]:= PolarPlot[{1, 2, 3}, {θ, 0, 2Pi}, PlotStyle -> {Blue, Directive[Red, Dashed], Directive[Purple, Thick]}, PlotLegends -> "Expressions"]

Out[1]= [image]
```

---

Use a theme with dark background and high-contrast colors:

```wl
In[1]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotTheme -> "Marketing"]

Out[1]= [image]
```

Use a theme with minimal styling:

```wl
In[2]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotTheme -> "Minimal"]

Out[2]= [image]
```

---

Use a log scale on the radial components of a polar plot:

```wl
In[1]:= PolarPlot[θ, {θ, 0, 4Pi}, ScalingFunctions -> "Log"]

Out[1]= [image]
```

Scale only the ``x`` direction:

```wl
In[2]:= PolarPlot[θ, {θ, 0, 4Pi}, ScalingFunctions -> {"SignedLog", None, None, None}, AspectRatio -> 1]

Out[2]= [image]
```

### Options (134)

#### AspectRatio (3)

By default, the ratio of the height to width for the plot is determined automatically:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}]

Out[1]= [image]
```

---

Make the height the same as the width with ``AspectRatio -> 1`` :

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AspectRatio -> 1]

Out[1]= [image]
```

---

``AspectRatio -> Full`` adjusts the height and width to tightly fit inside other constructs:

```wl
In[1]:= plot = PolarPlot[Sqrt[t], {t, 0, 2 π}, AspectRatio -> Full];

In[2]:= {Framed[Pane[plot, {50, 100}]], Framed[Pane[plot, {100, 100}]], Framed[Pane[plot, {100, 50}]]}

Out[2]= [image]
```

#### Axes (4)

By default, axes are drawn:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, Axes -> False]

Out[1]= [image]
```

---

Use ``AxesOrigin`` to specify where the axes intersect:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AxesOrigin -> {1, 1}]

Out[1]= [image]
```

---

Turn each axis on individually:

```wl
In[1]:= {PolarPlot[Sqrt[t], {t, 0, 2 π}, Axes -> {True, False}], PolarPlot[Sqrt[t], {t, 0, 2 π}, Axes -> {False, True}]}

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

#### AxesLabel (3)

No axes labels are drawn by default:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}]

Out[1]= [image]
```

---

Place a label on the $y$ axis:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AxesLabel -> r]

Out[1]= [image]
```

---

Specify axes labels:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AxesLabel -> {r, r}]

Out[1]= [image]
```

#### AxesOrigin (2)

The position of the axes is determined automatically:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}]

Out[1]= [image]
```

---

Specify an explicit origin for the axes:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AxesOrigin -> {1, 0}]

Out[1]= [image]
```

#### AxesStyle (4)

Change the style for the axes:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AxesStyle -> Red]

Out[1]= [image]
```

---

Specify the style of each axis:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AxesStyle -> {Red, Blue}]

Out[1]= [image]
```

---

Use different styles for the ticks and the axes:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AxesStyle -> Red, TicksStyle -> Black]

Out[1]= [image]
```

---

Use different styles for the labels and the axes:

```wl
In[1]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AxesStyle -> Green, LabelStyle -> Black]

Out[1]= [image]
```

#### ColorFunction (4)

Color the curve by scaled $x$, $y$, $\theta$, or $r$ value:

```wl
In[1]:= Table[PolarPlot[Sin[4θ], {θ, 0, 2Pi}, ColorFunction -> f], {f, {Function[{x, y, t, r}, Hue[x]], Function[{x, y, t, r}, Hue[y]], Function[{x, y, t, r}, Hue[t]], Function[{x, y, t, r}, Hue[r]]}}]

Out[1]= [image]
```

---

Use a named color gradient:

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, ColorFunction -> "DarkRainbow"]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, ColorFunction -> "DarkRainbow", PlotStyle -> Directive[Red, Thick]]

Out[1]= [image]
```

---

Use red for the parameter $\theta >\pi$ :

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, ColorFunction -> Function[{x, y, t, r}, If[t > Pi, Red, Black]], ColorFunctionScaling -> False, PlotStyle -> Thick]

Out[1]= [image]
```

#### ColorFunctionScaling (1)

Color the curve by angle:

```wl
In[1]:= PolarPlot[θ, {θ, 0, 4Pi}, PlotStyle -> Thick, ColorFunction -> Function[{x, y, t, r}, Hue[t / (2Pi)]], ColorFunctionScaling -> False]

Out[1]= [image]
```

#### EvaluationMonitor (3)

Find the list of parameter values evaluated:

```wl
In[1]:= Reap[PolarPlot[Sin[4θ], {θ, 0, 2Pi}, EvaluationMonitor :> Sow[θ]];]//Short

Out[1]//Short= {Null, {{0., 0.12333, 0.257035, «1772», 5.76497, 5.88713, 6.28103}}}
```

---

Find the coordinate values:

```wl
In[1]:= data = Reap[PolarPlot[Sin[4θ], {θ, 0, 2Pi}, EvaluationMonitor :> Sow[Sin[4θ]{Cos[θ], Sin[θ]}]] ][[-1, 1]];

In[2]:= ListPlot[data ]

Out[2]= [image]
```

---

Count how many times the function is evaluated:

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

Out[1]= 1778
```

#### Exclusions (3)

Automatically determine exclusions:

```wl
In[1]:= PolarPlot[Floor[θ], {θ, 0, 2Pi}]

Out[1]= [image]
```

---

Provide an explicit list of points for exclusions:

```wl
In[1]:= PolarPlot[Tan[θ], {θ, 0, 2Pi}, Exclusions -> Range[Pi / 2, 2Pi, Pi], AspectRatio -> 1]

Out[1]= [image]
```

---

Specify exclusions using equations:

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

Out[1]= [image]
```

#### ExclusionsStyle (2)

Specify explicit styling for lines joining exclusion points:

```wl
In[1]:= PolarPlot[Floor[θ], {θ, 0, 2Pi}, ExclusionsStyle -> Red]

Out[1]= [image]
```

---

Provide styling for both exclusion points and the lines joining them:

```wl
In[1]:= PolarPlot[Floor[θ], {θ, 0, 2Pi}, ExclusionsStyle -> {Dashed, PointSize[Medium]}]

Out[1]= [image]
```

#### Frame (4)

``PolarPlot`` does not use a frame by default:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}]

Out[1]= [image]
```

---

Use ``Frame -> True`` to turn on the frame:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True]

Out[1]= [image]
```

---

Draw a frame on the left and right edges:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> {{True, True}, {False, False}}]

Out[1]= [image]
```

---

Draw a frame on the left and bottom edges:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> {{True, False}, {True, False}}]

Out[1]= [image]
```

#### FrameLabel (3)

Place a label along the bottom frame of a plot:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameLabel -> "label"]

Out[1]= [image]
```

---

Place labels on the bottom and left frame edges:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameLabel -> {{Left, None}, {Bottom, None}}]

Out[1]= [image]
```

---

Place labels on each of the edges in the frame:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameLabel -> {{Left, Right}, {Bottom, Top}}]

Out[1]= [image]
```

#### FrameStyle (2)

Specify the style of the frame:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameStyle -> Directive[Black, Thick]]

Out[1]= [image]
```

---

Specify style for each frame edge:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameStyle -> {{Directive[Black, Thick], Red}, {Directive[Gray, Thick], Directive[Blue]}}]

Out[1]= [image]
```

#### FrameTicks (8)

Frame ticks are placed automatically by default:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True]

Out[1]= [image]
```

---

Use a frame with no ticks:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameTicks -> None]

Out[1]= [image]
```

---

Use frame ticks on the bottom edge:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameTicks -> {{None, None}, {Automatic, None}}]

Out[1]= [image]
```

---

By default, the top and right edges have tick marks but no tick labels:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameTicks -> Automatic]

Out[1]= [image]
```

Use ``All`` to include tick labels on all edges:

```wl
In[2]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameTicks -> All]

Out[2]= [image]
```

---

Place tick marks at specific positions:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameTicks -> {{{-1, 0.5, 1}, Automatic}, {{-1, 1}, Automatic}}]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameTicks -> {{{{-1, -a}, {0.5, b}, {1, a}}, Automatic}, {{{-1, -a}, {1, a}}, Automatic}}]

Out[1]= [image]
```

---

Specify the lengths for tick marks as a fraction of the graphics size:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Axes -> False, Frame -> True, FrameTicks -> {{{{-1, -a, .2}, {1, a, .2}}, Automatic}, {Automatic, Automatic}}]

Out[1]= [image]
```

Use different sizes in the positive and negative directions for each tick mark:

```wl
In[2]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0, .9 π}, Axes -> False, Frame -> True, FrameTicks -> {{{{-1, -a, {.1, .1}}, {0.5, b, {.2, .1}}, {1, a, {.2, .1}}}, Automatic}, {Automatic, Automatic}}]

Out[2]= [image]
```

---

Specify a style for each frame tick:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0, .9 π}, Axes -> False, Frame -> True, FrameTicks -> {{{{-1, -a, {.1, .1}, Directive[Thick, Blue]}, {0.5, b, {.1, .1}, Directive[Thick, Darker@Green, Dashed]}, {1, a, {.1, .1}, Directive[Thick, Red]}}, Automatic}, {Automatic, Automatic}}]

Out[1]= [image]
```

#### FrameTicksStyle (3)

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

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0, .9 π}, Axes -> False, Frame -> True, FrameStyle -> Directive[Red]]

Out[1]= [image]
```

---

Specify an overall style for the ticks, including the labels:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0, .9 π}, Axes -> False, Frame -> True, FrameTicksStyle -> Directive[Red, Thick]]

Out[1]= [image]
```

---

Use different styles for the different frame edges:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0, .9 π}, Axes -> False, Frame -> True, FrameTicks -> All, FrameTicksStyle -> {{Directive[Black, Thick], Blue}, {Red, Darker@Green}}]

Out[1]= [image]
```

#### ImageSize (7)

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

```wl
In[1]:= {PolarPlot[Sqrt[t], {t, 0, 2 π}, ImageSize -> Tiny], PolarPlot[Sqrt[t], {t, 0, 2 π}, ImageSize -> Small]}

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

---

Specify the width of the plot:

```wl
In[1]:= {PolarPlot[Sqrt[t], {t, 0, 2 π}, ImageSize -> 150], PolarPlot[Sqrt[t], {t, 0, 2 π}, AspectRatio -> 1.5, ImageSize -> 150]}

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

Specify the height of the plot:

```wl
In[2]:= {PolarPlot[Sqrt[t], {t, 0, 2 π}, ImageSize -> {Automatic, 150}], PolarPlot[Sqrt[t], {t, 0, 2 π}, AspectRatio -> 2, ImageSize -> {Automatic, 150}]}

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

---

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

```wl
In[1]:= {PolarPlot[Sqrt[t], {t, 0, 2 π}, ImageSize -> UpTo[200]], PolarPlot[Sqrt[t], {t, 0, 2 π}, 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]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, ImageSize -> {200, 250}, Background -> LightBlue]

Out[1]= [image]
```

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

```wl
In[2]:= PolarPlot[Sqrt[t], {t, 0, 2 π}, AspectRatio -> Full, ImageSize -> {200, 250}, Background -> LightBlue]

Out[2]= [image]
```

---

Use maximum sizes for the width and height:

```wl
In[1]:= {PolarPlot[Sqrt[t], {t, 0, 2 π}, ImageSize -> {UpTo[150], UpTo[100]}], PolarPlot[Sqrt[t], {t, 0, 2 π}, AspectRatio -> 2, ImageSize -> {UpTo[150], UpTo[100]}]}

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

---

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

```wl
In[1]:= Framed[Pane[PolarPlot[Sqrt[t], {t, 0, 2 π}, ImageSize -> Full, Background -> LightBlue], {200, 100}]]

Out[1]= [image]
```

---

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

```wl
In[1]:= Framed[Pane[PolarPlot[Sqrt[t], {t, 0, 2 π}, AspectRatio -> Full, ImageSize -> {Scaled[0.5], Scaled[0.5]}, Background -> LightBlue], {200, 100}]]

Out[1]= [image]
```

#### LabelingSize (2)

Textual labels are shown at their actual sizes:

```wl
In[1]:= PolarPlot[Callout[Cos[Sin[t]], RandomWord[], {0.5, -0.5}], {t, 0, 2Pi}]

Out[1]= [image]
```

Specify the size of the text:

```wl
In[2]:= PolarPlot[Callout[Cos[Sin[t]], RandomWord[], {0.5, -0.5}], {t, 0, 2Pi}, LabelingSize -> 20]

Out[2]= [image]
```

---

Image labels are resized to fit in the plot:

```wl
In[1]:= PolarPlot[Callout[Cos[Sin[t]], [image], {0.5, -0.5}], {t, 0, 2Pi}]

Out[1]= [image]
```

Specify the labeling size:

```wl
In[2]:= PolarPlot[Callout[Cos[Sin[t]], [image], {0.5, -0.5}], {t, 0, 2Pi}, LabelingSize -> 60]

Out[2]= [image]
```

#### MaxRecursion (1)

Each level of ``MaxRecursion`` will adaptively subdivide the initial mesh into a finer mesh:

```wl
In[1]:= Table[ PolarPlot[Sin[4θ], {θ, 0, 6Pi}, MaxRecursion -> i, Mesh -> All, Ticks -> None], {i, {0, 3, 6}}]

Out[1]= [image]
```

#### Mesh (4)

Show the initial and final sampling meshes:

```wl
In[1]:= {PolarPlot[Sqrt[θ], {θ, 0, 2Pi}, Mesh -> Full], PolarPlot[Sqrt[θ], {θ, 0, 2Pi}, Mesh -> All]}

Out[1]= [image]
```

---

Use 10 mesh points evenly spaced in the $\theta$ direction:

```wl
In[1]:= PolarPlot[Sqrt[θ], {θ, 0, 2Pi}, Mesh -> 10]

Out[1]= [image]
```

---

Use an explicit list of values for the mesh in the $\theta$ direction:

```wl
In[1]:= PolarPlot[Sqrt[θ], {θ, 0, 2Pi}, Mesh -> {{Pi / 4, 5Pi / 4}}]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[Sqrt[θ], {θ, 0, 2Pi}, Mesh -> {{{Pi / 4, PointSize[Large]}, {5Pi / 4, Red}}}]

Out[1]= [image]
```

#### MeshFunctions (2)

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

```wl
In[1]:= Table[PolarPlot[Sin[4θ], {θ, 0, 2Pi}, MeshFunctions -> {f}, Mesh -> 15], {f, {Function[{x, y, t, r}, x], Function[{x, y, t, r}, y], Function[{x, y, t, r}, t], Function[{x, y, t, r}, r]}}]

Out[1]= [image]
```

---

Show five mesh levels in the $x$ direction (red) and 10 in the $y$ direction (blue):

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, Mesh -> {5, 10}, MeshFunctions -> {#1&, #2&}, MeshStyle -> {Directive[PointSize[Medium], Red], Blue}]

Out[1]= [image]
```

#### MeshShading (6)

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

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, Mesh -> 15, MeshShading -> {Red, Blue}]

Out[1]= [image]
```

---

Use ``None`` to remove segments:

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, Mesh -> 15, MeshShading -> {Red, None}]

Out[1]= [image]
```

---

``MeshShading`` can be used with ``PlotStyle`` :

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, PlotStyle -> Thick, Mesh -> 15, MeshShading -> {Red, Blue}]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, PlotStyle -> Green, Mesh -> 15, MeshShading -> {Red, Blue}]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, PlotStyle -> Directive[Thick, Yellow], Mesh -> 15, MeshShading -> {Red, Automatic}]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, PlotStyle -> Thick, ColorFunction -> Function[{x, y, θ, r}, Hue[θ]], Mesh -> 15, MeshShading -> {Black, Automatic}]

Out[1]= [image]
```

#### MeshStyle (4)

Automatically choose the mesh style:

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, Mesh -> 15]

Out[1]= [image]
```

---

Use a red mesh in the $x$ direction:

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, Mesh -> 15, MeshFunctions -> {#1&}, MeshStyle -> Red]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, Mesh -> 15, MeshFunctions -> {#1&, #2&}, MeshStyle -> {Red, Blue}]

Out[1]= [image]
```

---

Use big red mesh levels in the $\theta$ direction:

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, Mesh -> 15, MeshStyle -> Directive[PointSize[Large], Red]]

Out[1]= [image]
```

#### PerformanceGoal (2)

Generate a higher-quality plot:

```wl
In[1]:= Timing[PolarPlot[Sin[8θ], {θ, 0, 2Pi}, PerformanceGoal -> "Quality"]]

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

---

Emphasize performance, possibly at the cost of quality:

```wl
In[1]:= Timing[PolarPlot[Sin[8θ], {θ, 0, 2Pi}, PerformanceGoal -> "Speed"]]

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

#### PlotLabels (6)

``PlotLabels -> "Expressions"`` uses functions as curve labels:

```wl
In[1]:= PolarPlot[{Sin[t], Cos[t]}, {t, 0, π}, PlotLabels -> "Expressions"]

Out[1]= [image]
```

---

Specify the text to label the curves:

```wl
In[1]:= PolarPlot[{Sin[t], Cos[t]}, {t, 0, π}, PlotLabels -> {"label1", "label2"}]

Out[1]= [image]
```

---

Place the labels above the curves:

```wl
In[1]:= PolarPlot[{Sin[t], Cos[t]}, {t, 0, π}, PlotLabels -> Placed[{"label1", "label2"}, Above]]

Out[1]= [image]
```

Place the labels differently for each curve:

```wl
In[2]:= PolarPlot[{Sin[t], Cos[t]}, {t, 0, π}, PlotLabels -> {Placed["label1", Above], Placed["label2", Below]}]

Out[2]= [image]
```

---

Use callouts to identify the curves:

```wl
In[1]:= PolarPlot[{Sin[t], Cos[t]}, {t, 0, π}, PlotLabels -> {Callout["label1", {Scaled[0.3], Above}], Callout["label2", {Scaled[0.75], Below}]}]

Out[1]= [image]
```

---

Put labels relative to the outside of the curves:

```wl
In[1]:= Table[PolarPlot[{Cos[t], Cos[3t]}, {t, 0, π}, PlotLabels -> Callout[{"label1", "label2"}, pos]], {pos, {After, Before}}]

Out[1]= [image]
```

---

Use ``None`` to not add a label:

```wl
In[1]:= PolarPlot[{Cos[t], Cos[3t]}, {t, 0, π}, PlotLabels -> {"label1", None}]

Out[1]= [image]
```

#### PlotLegends (7)

Use the automatic legend:

```wl
In[1]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> Automatic]

Out[1]= [image]
```

No legends are used by default:

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

Out[2]= [image]
```

Use legends:

```wl
In[3]:= PolarPlot[Sin[3t], {t, 0, Pi}, PlotLegends -> All]

Out[3]= [image]
```

Show no legends:

```wl
In[4]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> None]

Out[4]= [image]
```

---

``PlotLegends`` automatically picks up ``PlotStyle`` option values:

```wl
In[1]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotStyle -> {Directive[Red, Dashed], Directive[Blue, AbsoluteThickness[5]]}, PlotLegends -> Automatic]

Out[1]= [image]
```

Show expressions as legends in ``TraditionalForm`` :

```wl
In[2]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> Placed["Expressions", Below]]

Out[2]= [image]
```

---

Specify a list of labels for legends:

```wl
In[1]:= PolarPlot[{1 + 1 / 10 Sin[3t], 1 + 1 / 10 Sin[6 t], 1 + 1 / 10 Sin[9t]}, {t, 0, 2π}, PlotStyle -> {Red, Blue, Orange}, PlotLegends -> {"ω = 3", "ω = 6", "ω = 9"}]

Out[1]= [image]
```

---

Place legends outside:

```wl
In[1]:= Table[PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> Placed[Automatic, pl], PlotLabel -> pl], {pl, {After, Before}}]

Out[1]= [image]

In[2]:= Table[PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> Placed[Automatic, pl], PlotLabel -> pl], {pl, {Above, Below}}]

Out[2]= [image]
```

---

Place legends inside:

```wl
In[1]:= Table[PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> Placed[Automatic, pl], PlotLabel -> pl], {pl, {Right, Left}}]

Out[1]= [image]

In[2]:= Table[PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> Placed[Automatic, pl], PlotLabel -> pl], {pl, {Top, Bottom}}]

Out[2]= [image]
```

---

Legend layout changes automatically along with position:

```wl
In[1]:= Table[PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> Placed[Automatic, pl], PlotLabel -> pl], {pl, {After, Above}}]

Out[1]= [image]
```

---

Use ``LineLegend`` to adjust the appearance of the legend:

```wl
In[1]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotLegends -> Placed[LineLegend["Expressions", LegendFunction -> Panel, LabelStyle -> {FontSize -> 12, Bold, FontFamily -> "Helvetica"}, LegendMargins -> 5], Below]]

Out[1]= [image]
```

Specify ``LegendMarkers`` :

```wl
In[2]:= marker = Graphics[BezierCurve[{{0, 0}, {1, 1}, {2, -1}, {3, 0}}], ImageSize -> Tiny]

Out[2]= [image]

In[3]:= PolarPlot[{1, 1 + 1 / 10 Sin[10t]}, {t, 0, 2Pi}, PlotStyle -> {Directive[Red, AbsoluteThickness[3], AbsoluteDashing[5]], Directive[Blue, AbsoluteThickness[2], AbsoluteDashing[8]]}, PlotLegends -> SwatchLegend["Expressions", LegendMarkers -> marker, LegendMarkerSize -> 40]]

Out[3]= [image]
```

#### PlotPoints (1)

Use more initial points to get a smoother plot:

```wl
In[1]:= Table[PolarPlot[Sin[2θ], {θ, 0, 2Pi}, PlotPoints -> i, MaxRecursion -> 0], {i, {10, 15, 25, 50}}]

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

#### PlotRange (2)

Show the curve where $-12\leq x\leq 12$ and $-12\leq y\leq 12$ :

```wl
In[1]:= PolarPlot[θ, {θ, 0, 10}, PlotRange -> 12]

Out[1]= [image]
```

---

With the natural range of values, the fine detail around the origin is not visible:

```wl
In[1]:= PolarPlot[Exp[θ], {θ, 0, 10}]

Out[1]= [image]
```

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

```wl
In[2]:= Table[PolarPlot[Exp[θ], {θ, 0, 10}, PlotRange -> pr], {pr, {10, 50, 250}}]

Out[2]= [image]
```

#### PlotStyle (5)

Use different style directives:

```wl
In[1]:= Table[PolarPlot[Sin[4θ], {θ, 0, 2Pi}, PlotStyle -> ps], {ps, {Red, Thick, Dashed, Directive[Red, Thick]}}]

Out[1]= [image]
```

---

By default, different styles are chosen for multiple curves and regions:

```wl
In[1]:= PolarPlot[{θ, -θ}, {θ, 0, 4Pi}]

Out[1]= [image]
```

---

Explicitly specify the style for different curves and regions:

```wl
In[1]:= PolarPlot[{θ, -θ}, {θ, 0, 4Pi}, PlotStyle -> {Purple, Orange}]

Out[1]= [image]
```

---

``PlotStyle`` can be combined with ``ColorFunction`` :

```wl
In[1]:= PolarPlot[Abs[Sin[4θ]], {θ, 0, 2Pi}, PlotStyle -> Thick, ColorFunction -> Function[{x, y, t, r}, Hue[r]]]

Out[1]= [image]
```

---

``PlotStyle`` can be combined with ``MeshShading`` :

```wl
In[1]:= PolarPlot[Sin[4θ], {θ, 0, 2Pi}, PlotStyle -> Thick, Mesh -> 15, MeshShading -> {Red, Blue}]

Out[1]= [image]
```

#### PlotTheme (1)

Use a theme with polar grid lines and bright colors:

```wl
In[1]:= PolarPlot[{θ, -θ}, {θ, 0, 4Pi}, PlotTheme -> "Business"]

Out[1]= [image]
```

Add another theme with legends:

```wl
In[2]:= PolarPlot[{θ, -θ}, {θ, 0, 4Pi}, PlotTheme -> {"Business", "Detailed"}]

Out[2]= [image]
```

Change plot styles:

```wl
In[3]:= PolarPlot[{θ, -θ}, {θ, 0, 4Pi}, PlotTheme -> {"Business", "Detailed"}, PlotStyle -> 96]

Out[3]= [image]
```

#### PolarAxes (3)

Use polar axes:

```wl
In[1]:= PolarPlot[1 - 2Sin[θ], {θ, 0, 2π}, PlotRangePadding -> 3, PolarAxes -> True]

Out[1]= [image]
```

---

Add polar grid lines:

```wl
In[1]:= PolarPlot[1 - 2Sin[θ], {θ, 0, 2π}, PlotRangePadding -> 3, PolarAxes -> True, PolarGridLines -> True]

Out[1]= [image]
```

---

Turn on the polar axis but not the radial axis:

```wl
In[1]:= PolarPlot[1 - 2Sin[θ], {θ, 0, 2π}, PlotRangePadding -> 3, PolarAxes -> {True, False}, PolarGridLines -> True]

Out[1]= [image]
```

#### PolarAxesOrigin (2)

Reorient the polar and radial axes so that they intersect where $\theta =0$ and $r=3$ :

```wl
In[1]:= PolarPlot[{2Sin[2θ], Cos[2θ]}, {θ, 0, 2π}, PlotRangePadding -> 2, PolarAxes -> True, PolarAxesOrigin -> {0, 3}]

Out[1]= [image]
```

---

Turn off the polar ticks and move the radial axis below the plot:

```wl
In[1]:= PolarPlot[{2Sin[2θ], Cos[2θ]}, {θ, 0, 2π}, PlotRangePadding -> 0.5, PolarAxes -> True, PolarAxesOrigin -> {{Bottom, Right}, Automatic}, PolarTicks -> {None, Automatic}]

Out[1]= [image]
```

#### PolarGridLines (3)

Use automatic polar grid lines:

```wl
In[1]:= PolarPlot[3Cos[3θ], {θ, 0, 2Pi}, PlotRangePadding -> 3, PolarAxes -> True, PolarGridLines -> Automatic]

Out[1]= [image]
```

---

Specify particular polar grid lines and ticks:

```wl
In[1]:= PolarPlot[3Cos[3θ], {θ, 0, 2Pi}, PlotRangePadding -> 2, PolarAxes -> True, PolarGridLines -> {{0, (2π/3), (4π/3)}, Automatic}, PolarTicks -> {{0, (2π/3), (4π/3)}, Automatic}]

Out[1]= [image]
```

---

Change the style of the specified grid lines:

```wl
In[1]:= PolarPlot[3Cos[3θ], {θ, 0, 2Pi}, GridLinesStyle -> Orange, PlotRangePadding -> 2, PolarAxes -> True, PolarGridLines -> {{0, (2π/3), (4π/3)}, Automatic}, PolarTicks -> {{0, (2π/3), (4π/3)}, Automatic}]

Out[1]= [image]
```

#### PolarTicks (3)

Use automatic polar ticks:

```wl
In[1]:= PolarPlot[1 - 2Sin[3θ], {θ, 0, 2Pi}, PlotRangePadding -> 4, PolarAxes -> True, PolarTicks -> Automatic]

Out[1]= [image]
```

---

Change the labels for some of the ticks so the angle runs from $-\pi$ to $\pi$ instead of $0$ to $2 \pi$ :

```wl
In[1]:= PolarPlot[1 - 2Sin[3θ], {θ, 0, 2Pi}, PlotRangePadding -> 4, PolarAxes -> True, PolarTicks -> {{0, (π/4), (π/2), (3 π/4), π, {(5 π/4), -(3π/4)}, {(3 π/2), -(π/2)}, {(7 π/4), -(π/4)}}, Automatic}]

Out[1]= [image]
```

---

Display polar ticks in degrees and specify the radial ticks:

```wl
In[1]:= PolarPlot[1 - 3Sin[5θ], {θ, 0, 2Pi}, PlotRangePadding -> 2, PolarAxes -> True, PolarTicks -> {"Degrees", Range[0, 5]}]

Out[1]= [image]
```

#### RegionFunction (1)

Show the plot where $r >\frac{1}{2}$ :

```wl
In[1]:= PolarPlot[Abs[Sin[2θ]], {θ, 0, 2Pi}, RegionFunction -> Function[{x, y, t, r}, r > 0.5], PlotStyle -> Thick]

Out[1]= [image]
```

#### ScalingFunctions (8)

By default, ``PolarPlot`` uses natural scale in both axes:

```wl
In[1]:= PolarPlot[5 Sin[4 θ] Cos[3 θ], {θ, 0, .9π}]

Out[1]= [image]
```

---

Log-scaled plots will only plot intervals over which ``Log`` is defined:

```wl
In[1]:= PolarPlot[5 Sin[4 θ] Cos[3 θ], {θ, 0, .9π}, ScalingFunctions -> {None, "Log", None, None}, AspectRatio -> 1]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[5Sin[4 θ] Cos[3 θ], {θ, 0, .9π}, ScalingFunctions -> {None, "SignedLog", None, None}, AspectRatio -> 1]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[5Sin[4 θ] Cos[3 θ], {θ, 0, .9π}, ScalingFunctions -> {None, "Reverse", None, None}]

Out[1]= [image]
```

---

Use a reciprocal scale in the $y$ direction:

```wl
In[1]:= PolarPlot[5 Sin[4 θ] Cos[3 θ], {θ, 0, .9π}, ScalingFunctions -> {Automatic, "Reciprocal", None, None}, AspectRatio -> 1]

Out[1]= [image]
```

---

Use a scale defined by a function and its inverse:

```wl
In[1]:= PolarPlot[Sin[4 θ] Cos[3 θ], {θ, 0, .9π}, ScalingFunctions -> {Automatic, {Log[#]&, Exp[-#]&}, None, None}, AspectRatio -> 1]

Out[1]= [image]
```

---

Use a scale for ``r`` :

```wl
In[1]:= {PolarPlot[5 Sin[4 θ] Cos[3 θ], {θ, 0, .9π}, ScalingFunctions -> "SignedLog"], PolarPlot[5 Sin[4 θ] Cos[3 θ], {θ, 0, .9π}, ScalingFunctions -> {Automatic, Automatic, Automatic, "SignedLog"}]}

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

---

Use a scale for ``θ``; it affects how the plot is sampled, but not the overall appearance of the plot:

```wl
In[1]:= PolarPlot[5 Sin[4 θ] Cos[3 θ], {θ, 0, 6}, Mesh -> 20, MeshStyle -> Red]

Out[1]= [image]

In[2]:= PolarPlot[5 Sin[4 θ] Cos[3 θ], {θ, 0, 6}, ScalingFunctions -> {Automatic, Automatic, "Log", Automatic}, Mesh -> 20, MeshStyle -> Red]

Out[2]= [image]
```

#### Ticks (9)

Ticks are placed automatically in each plot:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}]

Out[1]= [image]
```

---

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

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> None]

Out[1]= [image]
```

---

Use ticks on the $x$ axis, but not the $y$ axis:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> {Automatic, None}]

Out[1]= [image]
```

---

Place tick marks at specific positions:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> {{-1, 0.5, 1}, {-1, .5, 1}}]

Out[1]= [image]
```

---

Draw tick marks at the specified positions with specific labels:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> {{{-1, -a}, {0.5, b}, {1, a}}, {{-1, -a}, {1, a}}}]

Out[1]= [image]
```

---

Use specific ticks on one axis and automatic ticks on the other:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> {{{-1, -a}, {0.5, b}, {1, a}}, Automatic}]

Out[1]= [image]
```

---

Specify the lengths for ticks as a fraction on graphics size:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> {{{-1, -a, .4}, {0.5, b, .15}, {1, a, .2}}, Automatic}]

Out[1]= [image]
```

Use different sizes in the positive and negative directions for each tick:

```wl
In[2]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> {{{-1, -a, {.4, .4}}, {0.5, b, {.15, .15}}, {1, a, {.2, .2}}}, Automatic}]

Out[2]= [image]
```

---

Specify a style for each tick:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> {{{-1, -a, {.4, .4}, Directive[Thick, Darker@Green]}, {0.5, b, {.15, .15}, Directive[Thick, Red]}, {1, a, {.2, .2}, Directive[Thick, Blue, Dashed]}}, Automatic}]

Out[1]= [image]
```

---

Construct a function that places ticks at the midpoint and extremes of the axis:

```wl
In[1]:= minMeanMax[min_, max_] := {{min, min}, {(max + min) / 2, (max + min) / 2}, {max, max}}

In[2]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, Ticks -> {minMeanMax, minMeanMax}, PlotRangePadding -> None]

Out[2]= [image]
```

#### TicksStyle (4)

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

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, AxesStyle -> Red]

Out[1]= [image]
```

---

Specify an overall ticks style, including the tick labels:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, TicksStyle -> Red]

Out[1]= [image]
```

---

Specify ticks style for each of the axes:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, TicksStyle -> {Directive[Blue, Thick], Directive[Red]}]

Out[1]= [image]
```

---

Use a different style for the tick labels and tick marks:

```wl
In[1]:= PolarPlot[5Sin[2 θ] Cos[ 2θ], {θ, 0 , π}, TicksStyle -> Directive[Red, Thick], LabelStyle -> Blue]

Out[1]= [image]
```

#### WorkingPrecision (2)

Evaluate functions using machine-precision arithmetic:

```wl
In[1]:= PolarPlot[Sin[2θ + 10 ^ 16], {θ, 0, 2Pi}, WorkingPrecision -> MachinePrecision]

Out[1]= [image]
```

---

Evaluate functions using arbitrary-precision arithmetic:

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

Out[1]= [image]
```

### Applications (4)

Plot a circle:

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

Out[1]= [image]
```

A spiral:

```wl
In[2]:= PolarPlot[θ, {θ, 0, 2Pi}]

Out[2]= [image]
```

An oscillation around a circle:

```wl
In[3]:= PolarPlot[1 + 1 / 10 Sin[10θ], {θ, 0, 2Pi}]

Out[3]= [image]
```

---

Archimedean spirals of the form $r=a \theta ^{1/n}$ :

```wl
In[1]:=
{PolarPlot[θ ^ (1 / 2), {θ, 0, 20}, Frame -> True, PlotLabel -> r == θ ^ (1 / 2)], 
	PolarPlot[θ, {θ, 0, 20}, Frame -> True, PlotLabel -> r == θ]}

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

Archimedean spirals of the form $r=a \left/ \theta ^{1/n}\right.$ :

```wl
In[2]:=
{PolarPlot[θ ^ -1, {θ, 0.1, 25}, PlotRange -> {{-1 / 2, 2.5}, All}, Frame -> True, PlotLabel -> r == θ ^ -1], 
	PolarPlot[θ ^ (-1 / 2), {θ, 0.1, 25}, PlotRange -> {{-3 / 5, 2.5}, All}, Frame -> True, PlotLabel -> r == θ ^ (-1 / 2)]}

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

---

Logarithmic spirals have the form $r=a e^{b \theta }$ :

```wl
In[1]:= PolarPlot[E ^ (θ / 10), {θ, 0, 30}, Frame -> True, PlotLabel -> r == E ^ (θ / 10)]

Out[1]= [image]
```

---

Create a Guilloché pattern [[more info]](http://mathworld.wolfram.com/GuillochePattern.html) :

```wl
In[1]:= guilloche[{a_, b_, c_, d_, e_, f_}, o : OptionsPattern[]] := PolarPlot[Evaluate[Flatten[{Table[(c + Sin[a x + d]) + ((b + Sin[b x + e]) - (c + Sin[a x + d])) (f + Sin[a x + n / Pi]) / 2, {n, 0, 19}]}]], {x, 0, 2 Pi}, o, Axes -> None, Frame -> False]

In[2]:= guilloche[{4, 8, 20, 4.7, 1.8, 1}, PlotStyle -> Darker[Green, 0.5]]

Out[2]= [image]
```

### Properties & Relations (5)

``PolarPlot`` is a special case of ``ParametricPlot`` for curves:

```wl
In[1]:= {PolarPlot[θ, {θ, 0, 4Pi}], ParametricPlot[{θ Cos[θ], θ Sin[θ]}, {θ, 0, 4Pi}]}

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

---

Use ``ListPolarPlot`` for data:

```wl
In[1]:= {ListPolarPlot[Table[θ, {θ, 0, 2Pi, 0.1}]], PolarPlot[θ, {θ, 0, 2Pi}]}

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

---

Use ``Plot3D`` and ``ParametricPlot3D`` for function and parametric surfaces:

```wl
In[1]:= Plot3D[(x ^ 2 + y ^ 2)Exp[-(x ^ 2 + y ^ 2)], {x, -2, 2}, {y, -2, 2}]

Out[1]= [image]

In[2]:= ParametricPlot3D[{-2 Cos[u] Cos[v] ^ 3, -2 Cos[v] ^ 2 Sin[u], 2 Tan[v]}, {u, 0, 2Pi}, {v, -1, 1}]

Out[2]= [image]
```

---

Use ``RevolutionPlot3D`` and ``SphericalPlot3D`` for cylindrical and spherical coordinates:

```wl
In[1]:= RevolutionPlot3D[-(ϕ + Sin[r]), {r, 0, 4Pi}, {ϕ, 0, 2Pi}]

Out[1]= [image]

In[2]:= SphericalPlot3D[1 + 1 / 5Sin[3v], {u, 0, Pi}, {v, 0, 2Pi}]

Out[2]= [image]
```

---

Use ``ContourPlot`` and ``RegionPlot`` for implicit curves and regions:

```wl
In[1]:= {ContourPlot[x ^ 2 + y ^ 2 == 4, {x, -2, 2}, {y, -2, 2}], RegionPlot[1 < x ^ 2 + y ^ 2 < 4, {x, -2, 2}, {y, -2, 2}]}

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

### Neat Examples (2)

```wl
In[1]:= PolarPlot[Exp[Cos[θ]] - 2Cos[4θ] + Sin[θ / 12]^5, {θ, 0, 20π}]

Out[1]= [image]
```

---

```wl
In[1]:= PolarPlot[Evaluate[Table[Abs[Sin[θ + i]], {i, 0, 2Pi, 2Pi / 16}]], {θ, 0, 2Pi}, PlotStyle -> Thick, ColorFunction -> Function[{x, y, t, r}, Hue[r]], Axes -> False, RegionFunction -> Function[{x, y, t, r}, r < 0.555], ColorFunctionScaling -> False, PlotPoints -> 20, MaxRecursion -> 3]

Out[1]= [image]
```

## See Also

* [`ListPolarPlot`](https://reference.wolfram.com/language/ref/ListPolarPlot.en.md)
* [`ParametricPlot`](https://reference.wolfram.com/language/ref/ParametricPlot.en.md)
* [`RevolutionPlot3D`](https://reference.wolfram.com/language/ref/RevolutionPlot3D.en.md)
* [`SphericalPlot3D`](https://reference.wolfram.com/language/ref/SphericalPlot3D.en.md)
* [`PieChart`](https://reference.wolfram.com/language/ref/PieChart.en.md)
* [`SectorChart`](https://reference.wolfram.com/language/ref/SectorChart.en.md)
* [`RadialAxisPlot`](https://reference.wolfram.com/language/ref/RadialAxisPlot.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) ▪ [2012 (9.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn90.en.md) ▪ [2014 (10.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn100.en.md) ▪ [2019 (12.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn120.en.md) ▪ [2022 (13.1)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn131.en.md)