我是Python的新手,尤其是使用matplotlib绘制图形的新手。我正在做一个作业,我们必须在带有x和y方程的笛卡尔坐标系上绘制呼吸描记器:
x = (R + r) * math.cos(theta) - d * math.cos((R+r)*theta/r)
y = (R + r) * math.sin(theta) - d * math.sin((R+r)*theta/r)
给出R,r和d的值。
这会产生错误,因为未定义变量theta。我已经看到了使用numPy定义theta的方法,但是我们不允许将此特定库用于此分配。绘制0 谢谢!
答案 0 :(得分:0)
如果不能使用numpy,则不能使用matplotlib。因为numpy是matplotlib的依赖项。因此,我建议您通过以下方式解决您的问题:
在您的解决方案中加上一句话:“由于numpy是matplotlib的依赖项,因此从技术上讲,如果不使用numpy,就不可能解决此任务。由于我不想让此限制阻止我解决该任务,因此我只是假设我可以在这里使用numpy。“
然后继续规范的解决方案
import matplotlib.pyplot as plt
import numpy as np
theta = np.linspace(0,2*np.pi,301)
R = 8
r = 1
d = 3
x = (R + r) * np.cos(theta) - d * np.cos((R+r)*theta/r)
y = (R + r) * np.sin(theta) - d * np.sin((R+r)*theta/r)
plt.plot(x,y)
plt.axis("equal")
plt.show()
答案 1 :(得分:0)
如果不能使用numpy,则可以通过函数和循环来实现:
import math
import matplotlib.pyplot as plt
def X(theta,R,r,d) :
return (R + r) * math.cos(theta) - d * math.cos((R+r)*theta/r)
def Y(theta,R,r,d) :
return (R + r) * math.sin(theta) - d * math.sin((R+r)*theta/r)
nbSamples=100
theta=[]
for i in range (nbSamples) :
theta.append(i/(nbSamples-1)*2*math.pi)
x=[]
y=[]
R=8
r=1
d=3
for th in theta:
x.append(X(th,R,r,d))
y.append(Y(th,R,r,d))
plt.plot(x,y)
plt.axis("equal")
plt.show()