I'm trying to write a code that plots the elliptical paths of an object using the equation for the ellipse r=a(1-e^2)/(1+e*cos(theta)). I'd also like this data to be put into an array for other use.
from numpy import *#Imports Python mathematical functions library
import matplotlib.pyplot as plt #Imports plot library
from pylab import *
a = 5
e = 0.3
theta = 0
while theta <= 2*pi:
r = (a*(1-e**2))/(1+e*cos(theta))
print("r = ",r,"theta = ",theta)
plt.polar(theta, r)
theta += pi/180
plt.show()
The code spits out correct values for r and theta, but the plot is blank. The polar plot window appears, but there is nothing plotted.
Please help. Thanks in advance.
I think you need to do
points.append([theta,r])
then at the endplt.polar(points)
... that makes a kinda neat design tooDo not call
plt.polar
once for every point. Instead, call it once, with all the data as input:By the way, numpy can do the calculation as a two-liner, instead of using a while-loop:
This defines
theta
andr
as numpy arrays (rather than single values).