Abay Bektursun
Abay Bektursun

Reputation: 93

matplotlib unexpected results polar plot

I am trying to plot simple function r = 3*sin(2*theta) using matplotlib:

import numpy as np
import matplotlib.pyplot as plt
theta = np.arange(0,2*np.pi,0.01)
r = 3.0*np.sin(2.0*theta)
ax = plt.subplot(111, projection='polar')
ax.plot(theta, r)
plt.show()

This is the result I get (it is not correct):

matplolib

This is what I expect to see (wolfram alpha): wolfram alpha

Am I missing something? Thanks!

Upvotes: 0

Views: 564

Answers (1)

f5r5e5d
f5r5e5d

Reputation: 3706

this patches the polar plot for neg r

import numpy as np
import matplotlib.pyplot as plt
theta = np.arange(0,2*np.pi,0.01)
r = 3.0*np.sin(2.0*theta)
theta = theta + (1 - np.sign(r))*np.pi/2 # add pi to points with negative r values
r = np.abs(r) # make all r values postive to fake out matplotlib
ax = plt.subplot(111, projection='polar')
ax.plot(theta, r)
plt.show()

Upvotes: 1

Related Questions