Fill Between Two Polar Curves with matplotlib fill_between

matplotlib, python

Solution

Perhaps compute the mininum of r and r2, and then fill between 0 and that minimum:

import numpy as np
import matplotlib.pyplot as plt

theta = np.arange(0, 2, 1./180)*np.pi
r = abs(4*np.sin(2*theta))
r2 = 2 + 0*theta
r3 = np.minimum(r, r2)
plt.polar(theta, r, lw=3)
plt.polar(theta, r2, lw=3)
plt.fill_between(theta, 0, r3, alpha=0.2)
plt.show()

Problem

I have a feeling I'm going to be smacking my forehead on this one, but I'm trying to fill the common interior of two polar functions `r = 4 sin(2θ)` and `r = 2`. It seems I'm getting the opposite of what I want. Any ideas? ``` import numpy as np import matplotlib.pyplot as plt theta = np.arange(0, 2, 1./180)*np.pi r = abs(4*np.sin(2*theta)) r2 = 2 + 0*theta plt.polar(theta, r, lw=3) plt.polar(theta, r2, lw=3) plt.fill_between(theta, r, r2, alpha=0.2) plt.show() ```

Original source