我有一个带有x和y坐标的文本文件,我用这个程序想要计算一条曲线,然而,结果是一条直线重复自己 数据作为x和y坐标单独导入。以下是处理此数据的代码
def plotDots(t,x_acc,y_acc):
while x_acc and y_acc:
t.pu()
t.goto(x_acc[0],y_acc[0])
t.pd()
t.stamp()
x_acc, y_acc=x_acc[1:], y_acc[1:]
def plotRegression(x,x_acc,y_acc):
ave_x=sum(x_acc)/len(x_acc) #Calculating curve
ave_y=sum(y_acc)/len(y_acc)
n=len(x_acc)
m=((x_acc[0]*y_acc[0])-(n*ave_x*ave_y))/(x_acc[0]**2-(n-x_acc[0]**2))
y=ave_y+m*(x-ave_x)
return y
def main():
t=turtle.Turtle()
wn=turtle.Screen()
turtle.setworldcoordinates(-1000,-1000,1000,1000)
doc=open("labdata.txt")
line=doc.readline()
y_acc=[]
x_acc=[]
while line:
values=line.split()
x_acc=x_acc +[float(values[0])]
y_acc=y_acc +[float(values[1])]
line=doc.readline()
plotDots(t,x_acc,y_acc)
for x in x_acc:
t.goto(x, plotRegression(x,x_acc,y_acc))
doc.close()
wn.exitonclick()
main()
答案 0 :(得分:1)
我阅读您的脚本的方式是,您需要为数据拟合线性线。然后,您将绘制 fit ,线性行,因为dynamic_show.js.erb
将返回属于您的输入{{1}的值拟合值plotRegression
(在`t.goto(...)。中
所以你想知道一条直线;你应该看到它。
简单使用
y
画出你的曲线。
<小时/> 注意:计算回归一次更有意义,然后对每个x进行评估。所以创建一个函数
x
,返回for x, y in zip(x_acc, y_acc):
t.goto(x, y)
和calcRegression
,你的拟合参数,然后是一个a
,它接受输入b
(浮点数或数组)浮动)并返回evalRegression
如果函数x
实际上没有绘制任何内容,我就不会调用它。
<小时/> 如果您打算将其用于科学计算,那么最好使用numpy / scipy / pandas进行计算,例如用于绘图的matplotlib。
如果它只是练习的一部分,没有问题,但不能用它来解决现实问题,因为人们之前已经解决了这个问题(总体而言,更仔细,更详细)。