在Python中用变量Theta绘制函数

时间:2019-02-04 19:02:08

标签: python matplotlib

我是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

谢谢!

2 个答案:

答案 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()

enter image description here

答案 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()