Brian W.
Brian W.

Reputation: 165

Fill Between Two Polar Curves with matplotlib fill_between

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()

Polar Plot

Upvotes: 10

Views: 6600

Answers (1)

unutbu
unutbu

Reputation: 880687

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()

enter image description here

Upvotes: 12

Related Questions