generates a polar plot of a curve with radius r as a function of angle θ.


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 axis.
  • The , position corresponding to , is , . The value of need not be between and .
  • 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:
  • Automaticautomatically placed labels
    Above, Below, Before, Afterpositions around the curve
    unear 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 Truewhether to draw axes
    AxesOrigin {0,0}the origin where axes cross
    ColorFunction Automatichow to determine the coloring of curves
    ColorFunctionScaling Truewhether to scale arguments to ColorFunction
    EvaluationMonitor Noneexpression to evaluate at every function evaluation
    Exclusions Automaticpoints in to exclude
    ExclusionsStyle Nonewhat to draw at excluded points
    LabelingSize Automaticmaximum size of callouts and labels
    MaxRecursion Automaticthe maximum number of recursive subdivisions allowed
    Mesh Nonehow many mesh points to draw on each curve
    MeshFunctions {#3&}how to determine the placement of mesh points
    MeshShading Nonehow to shade regions between mesh points
    MeshStyle Automaticthe style for mesh points
    MethodAutomaticthe method to use for refining curves
    PerformanceGoal $PerformanceGoalaspects of performance to try to optimize
    PlotLabels Nonelabels to use for curves
    PlotLegends Nonelegends for curves
    PlotPoints Automaticinitial number of sample points
    PlotRange Automaticthe range of values to include
    PlotRangeClippingTruewhether to clip at the plot range
    PlotStyle Automaticgraphics directives to specify the style for each curve
    PlotTheme $PlotThemeoverall theme for the plot
    PolarAxesFalsewhether to draw polar axes
    PolarAxesOriginAutomaticwhere to draw polar axes
    PolarGridLinesNonepolar gridlines to draw
    PolarTicksAutomaticpolar axes ticks
    RegionFunction (True&)how to determine whether a point should be included
    ScalingFunctions Nonehow to scale individual coordinates
    WorkingPrecision MachinePrecisionthe precision used in internal computations
  • Typical settings for PlotLegends include:
  • Noneno legend
    Automaticautomatically determine legend
    "Expressions"use r1, r2, as legend labels
    {lbl1,lbl2,}use lbl1, lbl2, as legend labels
    Placed[lspec,]specify placement for legend
  • 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:
  • srscale the r axis
    {sx,sy,sθ,sr}scale x, y, θ and r
  • Common built-in scaling functions s include:
  • "Log"log scale with automatic tick labeling
    "Log10"base-10 log scale with powers of 10 for ticks
    "SignedLog"log-like scale that includes 0 and negative numbers
    "Reverse"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.


open allclose all

Basic Examples  (3)

Make a polar plot:

Make several polar plots:

Style the curves:

Scope  (23)

Sampling  (6)

More points are sampled when the function changes quickly:

The plot range is selected automatically:

Ranges where the function becomes nonreal are excluded:

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

Use PlotPoints and MaxRecursion to control adaptive sampling:

Use PlotRange to focus in on areas of interest:

Labeling and Legending  (7)

Use Callout to add the expressions as a label:

Use any text as a label:

Place the label along the curve:

Place the label at a scaled position:

Place the labels relative to the inside of the curve:

Place the labels relative to the outside of the curve:

Label the curve with PlotLabels:

Label multiple curves:

Use a scaled position:

Specify the text position relative to the point:

Specify the label at {x,y} position:

Presentation  (10)

Multiple curves are automatically colored to be distinct:

Provide explicit styling to different curves and regions:

Add labels:

Provide an interactive Tooltip for each curve:

Create an overlay mesh:

Style the areas between mesh levels:

Color by parameter values:

Legend multiple curves:

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

Use a theme with minimal styling:

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

Scale only the x direction:

Options  (123)

AspectRatio  (3)

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

Make the height the same as the width with AspectRatio1:

AspectRatioFull adjusts the height and width to tightly fit inside other constructs:

Axes  (4)

By default, axes are drawn:

Use AxesFalse to turn off axes:

Use AxesOrigin to specify where the axes intersect:

Turn each axis on individually:

AxesLabel  (3)

No axes labels are drawn by default:

Place a label on the axis:

Specify axes labels:

AxesOrigin  (2)

The position of the axes is determined automatically:

Specify an explicit origin for the axes:

AxesStyle  (4)

Change the style for the axes:

Specify the style of each axis:

Use different styles for the ticks and the axes:

Use different styles for the labels and the axes:

ColorFunction  (4)

Color the curve by scaled , , , or value:

Use a named color gradient:

ColorFunction has higher priority than PlotStyle:

Use red for the parameter :

ColorFunctionScaling  (1)

Color the curve by angle:

EvaluationMonitor  (3)

Find the list of parameter values evaluated:

Find the coordinate values:

Count how many times the function is evaluated:

Exclusions  (3)

Automatically determine exclusions:

Provide an explicit list of points for exclusions:

Specify exclusions using equations:

ExclusionsStyle  (2)

Specify explicit styling for lines joining exclusion points:

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

Frame  (4)

PolarPlot does not use a frame by default:

Use FrameTrue to turn on the frame:

Draw a frame on the left and right edges:

Draw a frame on the left and bottom edges:

FrameLabel  (3)

Place a label along the bottom frame of a plot:

Place labels on the bottom and left frame edges:

Place labels on each of the edges in the frame:

FrameStyle  (2)

Specify the style of the frame:

Specify style for each frame edge:

FrameTicks  (8)

Frame ticks are placed automatically by default:

Use a frame with no ticks:

Use frame ticks on the bottom edge:

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

Use All to include tick labels on all edges:

Place tick marks at specific positions:

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

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

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

Specify a style for each frame tick:

FrameTicksStyle  (3)

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

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

Use different styles for the different frame edges:

ImageSize  (7)

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

Specify the width of the plot:

Specify the height of the plot:

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

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

Setting AspectRatioFull will fill the available space:

Use maximum sizes for the width and height:

Use ImageSizeFull to fill the available space in an object:

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

LabelingSize  (2)

Textual labels are shown at their actual sizes:

Specify the size of the text:

Image labels are resized to fit in the plot:

Specify the labeling size:

MaxRecursion  (1)

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

Mesh  (4)

Show the initial and final sampling meshes:

Use 10 mesh points evenly spaced in the direction:

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

Use explicit value and style for the mesh:

MeshFunctions  (2)

Use a mesh evenly spaced in the , , , and directions:

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

MeshShading  (6)

Alternate red and blue arcs in the direction:

Use None to remove segments:

MeshShading can be used with PlotStyle:

MeshShading has higher priority than PlotStyle for styling:

Use PlotStyle for some segments by setting MeshShading to Automatic:

MeshShading can be used with ColorFunction:

MeshStyle  (4)

Automatically choose the mesh style:

Use a red mesh in the direction:

Use a red mesh in the direction and a blue mesh in the direction:

Use big red mesh levels in the direction:

PerformanceGoal  (2)

Generate a higher-quality plot:

Emphasize performance, possibly at the cost of quality:

PlotLabels  (6)

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

Specify the text to label the curves:

Place the labels above the curves:

Place the labels differently for each curve:

Use callouts to identify the curves:

Put labels relative to the outside of the curves:

Use None to not add a label:

PlotLegends  (7)

Use the automatic legend:

No legends are used by default:

Use legends:

Show no legends:

PlotLegends automatically picks up PlotStyle option values:

Show expressions as legends in TraditionalForm:

Specify a list of labels for legends:

Place legends outside:

Place legends inside:

Legend layout changes automatically along with position:

Use LineLegend to adjust the appearance of the legend:

Specify LegendMarkers:

PlotPoints  (1)

Use more initial points to get a smoother plot:

PlotRange  (2)

Show the curve where and :

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

Use PlotRange to focus in on areas of interest:

PlotStyle  (5)

Use different style directives:

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

Explicitly specify the style for different curves and regions:

PlotStyle can be combined with ColorFunction:

PlotStyle can be combined with MeshShading:

PlotTheme  (1)

Use a theme with polar grid lines and bright colors:

Add another theme with legends:

Change plot styles:

RegionFunction  (1)

Show the plot where :

ScalingFunctions  (8)

By default, PolarPlot uses natural scale in both axes:

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

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

Use ScalingFunctions to reverse the coordinate direction in the direction:

Use a reciprocal scale in the direction:

Use a scale defined by a function and its inverse:

Use a scale for r:

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

Ticks  (9)

Ticks are placed automatically in each plot:

Use TicksNone to draw axes without any tick marks:

Use ticks on the axis, but not the axis:

Place tick marks at specific positions:

Draw tick marks at the specified positions with specific labels:

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

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

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

Specify a style for each tick:

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

TicksStyle  (4)

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

Specify an overall ticks style, including the tick labels:

Specify ticks style for each of the axes:

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

WorkingPrecision  (2)

Evaluate functions using machine-precision arithmetic:

Evaluate functions using arbitrary-precision arithmetic:

Applications  (4)

Plot a circle:

A spiral:

An oscillation around a circle:

Archimedean spirals of the form :

Archimedean spirals of the form :

Logarithmic spirals have the form :

Create a Guilloché pattern [more info]:

Properties & Relations  (5)

PolarPlot is a special case of ParametricPlot for curves:

Use ListPolarPlot for data:

Use Plot3D and ParametricPlot3D for function and parametric surfaces:

Use RevolutionPlot3D and SphericalPlot3D for cylindrical and spherical coordinates:

Use ContourPlot and RegionPlot for implicit curves and regions:

Neat Examples  (2)

Wolfram Research (2007), PolarPlot, Wolfram Language function, https://reference.wolfram.com/language/ref/PolarPlot.html (updated 2022).


Wolfram Research (2007), PolarPlot, Wolfram Language function, https://reference.wolfram.com/language/ref/PolarPlot.html (updated 2022).


Wolfram Language. 2007. "PolarPlot." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/PolarPlot.html.


Wolfram Language. (2007). PolarPlot. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/PolarPlot.html


@misc{reference.wolfram_2022_polarplot, author="Wolfram Research", title="{PolarPlot}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/PolarPlot.html}", note=[Accessed: 03-June-2023 ]}


@online{reference.wolfram_2022_polarplot, organization={Wolfram Research}, title={PolarPlot}, year={2022}, url={https://reference.wolfram.com/language/ref/PolarPlot.html}, note=[Accessed: 03-June-2023 ]}