我有一个csv文件中的简单x,y数据,我想绘制线性拟合。我按照这个问题的第一个答案中的示例进行操作:Linear regression with matplotlib / numpy
我的代码如下:
#!/usr/bin/env python
import matplotlib.axes as ax
import matplotlib.pyplot as plt
import numpy as np
import csv
import seaborn
from scipy import stats
x = []
y = []
z = []
with open('Data.csv','r') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
for row in plots:
x.append(float(row[0]))
y.append(float(row[2]))
xarray = np.array(x) #Convert data from csv into arrays
yarray = np.array(y)
m,b = np.polyfit(xarray,yarray,1)
plt.plot(xarray, yarray,'b+', m*xarray+b,'--k')
plt.plot(x,y,'ko')
f = [28.45294177, 61.06207611, 85.51892687,115.21653136,143.7495239] #this is the array
resulting from m*x+b
plt.plot(m*xarray+b)
plt.plot(x,f, 'r+')
plt.xlabel('Masse [kg]')
plt.ylabel('Auslenkung[mm]')
ax = plt.gca()
ax.set_xlim([0,0.3])
plt.title('')
plt.grid(True, linestyle = '--') #enable Grid, dashed linestyle
plt.show()
输出为:
“>
但是,所得图形(蓝线)根本不符合预期,斜率很小。当我得到m * x + b函数得出的数组的值并将其绘制时,这些值对应于预期的线性回归和实际的数据(红色加号)
老实说,我在这里机智。我似乎无法弄清楚我的错误在哪里,也不知道蓝线从何而来。
任何帮助将不胜感激
我有一个csv文件中的简单x,y数据,我想绘制线性拟合。我在此问题的第一个答案中遵循了该示例:使用matplotlib / numpy进行线性回归我的代码看起来...
plt.plot(m*xarray+b)
应为plt.plot(xarray, m*xarray+b)
。否则,matplotlib
将对X语法使用range(0, (m*xarray+b).size)
,如in the docs所述,位于第三行: