Bird
Raised Fist0
Matplotlibdata~5 mins

Polar axes in Matplotlib

Choose your learning style10 modes available
Introduction

Polar axes help you draw data on a circular grid. This is useful when your data depends on angles and distances, like directions or rotations.

You want to show wind directions and speeds on a circular chart.
You need to plot data that repeats every 360 degrees, like time of day or compass bearings.
You want to visualize cyclic patterns, such as seasons or phases of the moon.
You want to compare values based on angles, like radar charts or rose diagrams.
Syntax
Matplotlib
import matplotlib.pyplot as plt

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
plt.show()

Use subplot_kw={'projection': 'polar'} to create polar axes.

theta is the angle in radians, and r is the radius (distance from center).

Examples
This example plots a sine wave on polar axes, creating a flower-like shape.
Matplotlib
import numpy as np
import matplotlib.pyplot as plt

theta = np.linspace(0, 2 * np.pi, 100)
r = np.abs(np.sin(3 * theta))

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
plt.show()
This example shows a simple bar chart on polar axes, where bars extend outward from the center.
Matplotlib
import matplotlib.pyplot as plt

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.bar([0, 1, 2], [1, 2, 3], width=0.5)
plt.show()
Sample Program

This program draws a polar plot of the function |sin(2θ)|. The plot looks like a four-petal flower because the sine function repeats every π radians and the absolute value makes all values positive.

Matplotlib
import numpy as np
import matplotlib.pyplot as plt

# Create 100 points from 0 to 2*pi
theta = np.linspace(0, 2 * np.pi, 100)

# Radius is the absolute value of sine of 2*theta
r = np.abs(np.sin(2 * theta))

# Create polar plot
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_title('Polar plot of |sin(2θ)|')
plt.show()
OutputSuccess
Important Notes

Angles in polar plots are in radians, not degrees. Use np.deg2rad() to convert degrees to radians if needed.

You can customize the grid, labels, and limits on polar axes just like regular plots.

Summary

Polar axes let you plot data using angles and distances.

Use subplot_kw={'projection': 'polar'} to create polar plots.

Polar plots are great for cyclic or directional data.

Practice

(1/5)
1. What does setting projection='polar' do in a matplotlib plot?
easy
A. It creates a 3D plot with depth perspective.
B. It creates a plot with circular axes using angles and radius.
C. It changes the plot background to a polar color scheme.
D. It rotates the plot by 90 degrees.

Solution

  1. Step 1: Understand the projection parameter

    The projection argument in matplotlib defines the coordinate system for the plot.
  2. Step 2: Identify what 'polar' projection means

    Setting projection='polar' changes the axes to polar coordinates, which use angles and radius instead of x and y.
  3. Final Answer:

    It creates a plot with circular axes using angles and radius. -> Option B
  4. Quick Check:

    projection='polar' = circular axes [OK]
Hint: Remember: 'polar' means angle + radius axes [OK]
Common Mistakes:
  • Confusing polar projection with 3D plotting
  • Thinking it changes colors or rotates plot
  • Assuming it creates Cartesian axes
2. Which of the following is the correct way to create a polar plot in matplotlib?
easy
A. plt.plot(projection='polar')
B. plt.axis(polar=True)
C. plt.polar()
D. plt.subplot(projection='polar')

Solution

  1. Step 1: Recall how to create polar axes

    In matplotlib, plt.subplot(projection='polar') creates a polar subplot.
  2. Step 2: Check other options for correctness

    plt.plot() does not accept projection, plt.polar() is deprecated, and plt.axis(polar=True) does not create new axes.
  3. Final Answer:

    plt.subplot(projection='polar') -> Option D
  4. Quick Check:

    Use subplot with projection='polar' [OK]
Hint: Use plt.subplot(projection='polar') to start polar plots [OK]
Common Mistakes:
  • Using plt.plot with projection argument
  • Trying deprecated plt.polar() function
  • Passing polar=True instead of projection='polar'
3. What will the following code display?
import matplotlib.pyplot as plt
import numpy as np

ax = plt.subplot(projection='polar')
theta = np.linspace(0, 2*np.pi, 100)
r = np.abs(np.sin(3*theta))
ax.plot(theta, r)
plt.show()
medium
A. A polar plot with three 'petals' shaped by sine function.
B. A line plot with sine wave on Cartesian axes.
C. A scatter plot of random points on polar axes.
D. An error because np.abs cannot be used with polar plots.

Solution

  1. Step 1: Analyze the data arrays

    theta is angles from 0 to 2π, r is absolute sine of 3 times theta, creating 3 cycles.
  2. Step 2: Understand the plot type

    Plotting r vs theta on polar axes draws a 3-petal shape because sine(3θ) repeats 3 times around the circle.
  3. Final Answer:

    A polar plot with three 'petals' shaped by sine function. -> Option A
  4. Quick Check:

    Polar plot of |sin(3θ)| = 3 petals [OK]
Hint: sin(3θ) on polar plot makes 3 petals [OK]
Common Mistakes:
  • Thinking it plots Cartesian sine wave
  • Confusing plot type with scatter
  • Assuming np.abs causes error
4. Identify the error in this code snippet for a polar plot:
import matplotlib.pyplot as plt
ax = plt.subplot()
ax.plot([0, 1, 2], [0, 1, 0.5])
plt.show()
medium
A. Missing projection='polar' in subplot creation.
B. Plot data lists have different lengths.
C. plt.show() is called before plotting.
D. Using plt.subplot() instead of plt.subplots() causes error.

Solution

  1. Step 1: Check subplot creation

    The code uses plt.subplot() without projection='polar', so axes are Cartesian by default.
  2. Step 2: Understand impact on polar plotting

    Without polar projection, the plot is not polar. To create polar plot, projection='polar' must be specified.
  3. Final Answer:

    Missing projection='polar' in subplot creation. -> Option A
  4. Quick Check:

    Polar plot needs projection='polar' [OK]
Hint: Always add projection='polar' for polar axes [OK]
Common Mistakes:
  • Assuming plt.subplot() defaults to polar
  • Thinking plt.show() order matters here
  • Confusing plt.subplot() and plt.subplots()
5. You want to plot wind direction and speed data on a polar plot. Which approach correctly maps wind direction (degrees) to angle and speed to radius in matplotlib?
hard
A. Use wind direction in degrees as theta without conversion; plot with projection='polar'.
B. Use wind direction directly as radius and speed as theta; plot with projection='polar'.
C. Convert wind direction to radians, use as theta; use speed as radius; plot with projection='polar'.
D. Plot wind speed vs wind direction on Cartesian axes with projection='polar'.

Solution

  1. Step 1: Understand polar plot axes

    Polar plots use angles in radians for theta and distances for radius.
  2. Step 2: Map wind data correctly

    Wind direction in degrees must be converted to radians for theta; wind speed is radius. Plotting with projection='polar' shows correct directional data.
  3. Final Answer:

    Convert wind direction to radians, use as theta; use speed as radius; plot with projection='polar'. -> Option C
  4. Quick Check:

    Degrees to radians for theta, speed as radius [OK]
Hint: Convert degrees to radians for polar angles [OK]
Common Mistakes:
  • Using degrees directly without conversion
  • Swapping radius and angle values
  • Plotting on Cartesian axes expecting polar behavior
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard