因此,我有一个数据文件,已从中提取数据并制作了图表,但似乎无法弄清楚如何将最佳拟合与最佳拟合方程式相加。我总是收到一条错误消息,说“不能将序列与numpy.float64类型的非整数重复”
我尝试将b,m变量更改为浮点数,但这没有用。我尝试过更改我知道是浮点数的变量,但仍然没有用。
import matplotlib #plotpackage
matplotlib.use('TkAgg') #graphicspackage
import matplotlib.pyplot as plt #might be a redunancy
import csv
from statistics import mean
import numpy as np
from numpy.polynomial.polynomial import polyfit
abscissa = [] #coordinate systems
ordinate = []
with open('/home/jacob/Downloads/data.v3.txt', 'r') as datafile:
plots = csv.reader(datafile)
firstline = datafile.readline()
for line in datafile:
x, y, dy = line.split()
abscissa.append(float(x))
ordinate.append(float(y))
b, m = np.polyfit(abscissa, ordinate, 1)
plt.plot(abscissa, ordinate, label='Data line')
plt.plot(abscissa, b + m * abscissa, '-')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Data')
plt.legend()
plt.show()
我应该看到我的情节,上面有一条最合适的线。一旦我知道这条线,就可以轻松地将其作为等式调用并打印出来。
答案 0 :(得分:0)
有些地方可能会导致您需要检查一些问题。
polyfit
将返回斜率,然后截取-因此您将b
和m
颠倒了。abscissa
是一个列表,因此您将无法像数组一样执行算术运算。您可以将其转换为数组。 这可能是您出错的原因。尝试这样的事情:
abscissa = np.array(abscissa)
m, b = np.polyfit(abscissa, ordinate, 1)
plt.plot(abscissa, ordinate, label='Data line')
plt.plot(abscissa, b + m * abscissa, '-')
...