When I try to input the following values for a Rose Polar curve:
a = 1 (amplitude), b = 2 (frequency/no. of petals; if b>=2, then b*=2). And then set it to a sin.
hence the equation, r=1sin2(tetha-0)
this graph shows. How to fix it so it aligns to its correct radians for quadrant 1 which is pi/4.
here’s my code
import numpy as np
import matplotlib.pyplot as plt
def plot_rose_polar(a, b, use_sine, phi, original_b):
# Radians
n = 2001
theta = np.linspace(0, 2.0 * np.pi, n)
turn = theta – phi
# Calculate r based on the user's choice of sine or cosine
if use_sine:
r = a * np.sin(b * turn)
else:
r = a * np.cos(b * turn)
# Plot the graph
plt.figure(figsize=(6, 6))
ax = plt.subplot(111, polar=True)
ax.plot(theta, r, color='xkcd:darkgreen', label='rose curve')
trig_function = 'sin' if use_sine else 'cos'
ax.set_title(f'Rose Polar Graph: r={a}{trig_function}({original_b}(θ - {phi}))', va='bottom')
# Radians Annotation
radian_ticks = [0, np.pi/6, np.pi/4, np.pi/3, np.pi/2, 2*np.pi/3, 3*np.pi/4, 5*np.pi/6, np.pi, 7*np.pi/6, 5*np.pi/4, 4*np.pi/3, 3*np.pi/2, 5*np.pi/3, 7*np.pi/4, 11*np.pi/6, 2*np.pi]
radian_labels = ['0', r'$frac{pi}{6}$', r'$frac{pi}{4}$', r'$frac{pi}{3}$', r'$frac{pi}{2}$', r'$frac{2pi}{3}$', r'$frac{3pi}{4}$', r'$frac{5pi}{6}$', r'$pi$', r'$frac{7pi}{6}$', r'$frac{5pi}{4}$', r'$frac{4pi}{3}$', r'$frac{3pi}{2}$', r'$frac{5pi}{3}$', r'$frac{7pi}{4}$', r'$frac{11pi}{6}$', r'$2pi$']
ax.set_xticks(radian_ticks)
ax.set_xticklabels(radian_labels)
plt.show()
def main():
while True:
try:
# Inputs
print(“Rose Polar Graph: r = a * cos(bθ) or r = a * sin(bθ)”)
a = float(input(“Enter the value of a: “))
original_b = float(input(“Enter the value of b: “))
if original_b % 2 == 0:
b = original_b * 2
else:
b = original_b
trig_choice = input("Use sine or cosine? (enter 'sin' or 'cos'): ").strip().lower()
if trig_choice == 'sin':
use_sine = True
elif trig_choice == 'cos':
use_sine = False
else:
print("Invalid choice. Please enter 'sin' or 'cos'.")
continue
phi_choice = input("Do you want to turn the graph? (yes or no): ").strip().lower()
if phi_choice == 'yes':
phi = float(input("Enter the value of phi (in radians): "))
else:
phi = 0
# Plot the rose polar graph
plot_rose_polar(a, b, use_sine, phi, original_b)
convert_choice = input("Do you want to convert the graph from sine to cosine or vice versa? (yes or no): ").strip().lower()
if convert_choice == 'yes':
use_sine = not use_sine
plot_rose_polar(a, b, use_sine, phi, original_b)
except ValueError:
print("Invalid input. Please enter numeric values for a, b, and phi.")
cont = input("Do you want to plot another graph? (yes or no): ").strip().lower()
if cont != 'yes':
break
if name == “main“:
main()
It does not align to its correct radians
Paul S. Oga is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.