# Plotting polar curves in Python

Last Updated : 22 Jun, 2020

A point in polar co-ordinates is represented as (r, theta). Here, r is its distance from the origin and theta is the angle at which r has to be measured from origin. Any mathematical function in the Cartesian coordinate system can also be plotted using the polar coordinates.

### Modules required

• Matplotlib : Matplotlib is a comprehensive Python library for creating static and interactive plots and visualisations. To install this module type the below command in the terminal.
pip install matplotlib

• Numpy : Numpy is the core library for array computing in Python. To install this module type the below command in the terminal.
pip install numpy

• math : math is a built-in module used for performing various mathematical tasks.

The matplotlib.pyplot module contains a function polar(), which can be used for plotting curves in polar coordinates.

Syntax : matplotlib.pyplot.polar(theta, r, **kwargs)

Parameters :

• theta – angle
• r – distance

Approach :

In each of the examples below,

• A list of radian values is created. These values cover the domain of the respective function.
• For each radian value, theta, a corresponding value of r is calculated according to a specific formula for each curve.

1. Circle : A circle is a shape consisting of all points in a plane that are a given distance(radius) from a given point, the centre. Hence, r is a constant value equal to the radius.

Example :

## Python3

 import numpy as np import matplotlib.pyplot as plt     # setting the axes projection as polar plt.axes(projection = 'polar')   # setting the radius r = 2  # creating an array containing the # radian values rads = np.arange(0, (2 * np.pi), 0.01)   # plotting the circle for rad in rads:     plt.polar(rad, r, 'g.')   # display the Polar plot plt.show()

Output :

2. Ellipse : An ellipse is the locus of a point moving in a plane such that the sum of its distances from two other points (the foci) is constant. Here, r is defined as :

Where,

• a = length of semi major axis
• b = length of semi minor axis

Example :

## Python3

 import numpy as np import matplotlib.pyplot as plt import math     # setting the axes # projection as polar plt.axes(projection = 'polar')   # setting the values of # semi-major and # semi-minor axes a = 4b = 3  # creating an array # containing the radian values rads = np.arange(0, (2 * np.pi), 0.01)   # plotting the ellipse for rad in rads:     r = (a*b)/math.sqrt((a*np.sin(rad))**2 + (b*np.cos(rad))**2)     plt.polar(rad, r, 'g.')   # display the polar plot plt.show()

Output :

3. Cardioid : A cardioid is the locus of a point on the circumference of a circle as it rolls around another identical circle. Here, r is defined as :

Where, a = length of axis of cardioid

Example  :

## Python3

 import numpy as np import matplotlib.pyplot as plt import math     # setting the axes # projection as polar plt.axes(projection = 'polar')   # setting the length of  # axis of cardioid a=4  # creating an array # containing the radian values rads = np.arange(0, (2 * np.pi), 0.01)    # plotting the cardioid for rad in rads:     r = a + (a*np.cos(rad))      plt.polar(rad,r,'g.')    # display the polar plot plt.show()

Output :

4. Archimedean spiral : An Archimedean spiral is the locus of a point moving uniformly on a straight line, which itself is turning uniformly about one of its end points. Here, r is defined as :

Example:

## Python3

 import numpy as np import matplotlib.pyplot as plt     # setting the axes # projection as polar plt.axes(projection = 'polar')   # creating an array # containing the radian values rads = np.arange(0, 2 * np.pi, 0.001)    # plotting the spiral for rad in rads:     r = rad     plt.polar(rad, r, 'g.')       # display the polar plot plt.show()

Output :

5. Rhodonea : A Rhodonea or Rose curve is a rose-shaped sinusoid plotted in polar coordinates. Here, r is defined as :

Where,

• a = length of petals
• n = number of petals

Example:

## Python3

 import numpy as np import matplotlib.pyplot as plt     # setting the axes # projection as polar plt.axes(projection='polar')   # setting the length # and number of petals a = 1n = 6  # creating an array # containing the radian values rads = np.arange(0, 2 * np.pi, 0.001)    # plotting the rose for rad in rads:     r = a * np.cos(n*rad)     plt.polar(rad, r, 'g.')    # display the polar plot plt.show()

Output :