Python, построение графиков
Добрый день. Должен получиться график по типу как на фото 1

Пишу код, поле графика построено, а сам график нет, в чем проблема?

Код:
import numpy as np
import matplotlib.pyplot as plt
l1=2.5
l2=2.0
q1=45
q2=90
def diagramm_rab_obl_rob(l1,l2,q1,q2):
x=[]
y=[]
for i in range(q1):
for j in range(int(-(q2/2))):
x.append(l1*np.cos(i*np.pi/180)+l2*np.cos(i*np.pi/180+j*np.pi/180))
y.append(l1*np.sin(i*np.pi/180)+l2*np.sin(i*np.pi/180+j*np.pi/180))
return x,y
x,y=diagramm_rab_obl_rob(l1,l2,q1,q2)
plt.scatter(x,y,s=0.5)
В вашем коде есть несколько проблем:
1. Вы не импортируете matplotlib.pyplot правильно. Правильный способ импортировать его:
import matplotlib.pyplot as plt
2. Внутри функции diagramm_rab_obl_rob вы не возвращаете x и y. Вам нужно добавить оператор return в конец функции:
def diagramm_rab_obl_rob(l1, l2, q1, q2):
x = []
y = []
for i in range(q1):
for j in range(int(-(q2 / 2))):
x.append(l1 * np.cos(i * np.pi / 180) + l2 * np.cos(i * np.pi / 180 + j * np.pi / 180))
y.append(l1 * np.sin(i * np.pi / 180) + l2 * np.sin(i * np.pi / 180 + j * np.pi / 180))
return x, y
3. После того, как вы вызовете функцию diagramm_rab_obl_rob и получите значения x и y, вы должны построить график с помощью plt.plot(x, y), а не plt.scatter(x, y, s=0.5). plt.scatter используется для построения точечного графика, а plt.plot — для построения линейного графика.
Вот исправленный код:
import matplotlib.pyplot as plt
def diagramm_rab_obl_rob(l1, l2, q1, q2):
x = []
y = []
for i in range(q1):
for j in range(int(-(q2 / 2))):
x.append(l1 * np.cos(i * np.pi / 180) + l2 * np.cos(i * np.pi / 180 + j * np.pi / 180))
y.append(l1 * np.sin(i * np.pi / 180) + l2 * np.sin(i * np.pi / 180 + j * np.pi / 180))
return x, y
l1 = 2.5
l2 = 2.0
q1 = 45
q2 = 90
x, y = diagramm_rab_obl_rob(l1, l2, q1, q2)
plt.plot(x, y)
plt.show()