Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过数据的趋势曲线在应该平滑时来回跳跃_Python_Curve_Points_Trend - Fatal编程技术网

Python 通过数据的趋势曲线在应该平滑时来回跳跃

Python 通过数据的趋势曲线在应该平滑时来回跳跃,python,curve,points,trend,Python,Curve,Points,Trend,我想绘制数据点的趋势曲线。 我使用指数模型对这段代码进行了测试: with open(file,'r') as csvfile: plots = csv.reader(csvfile, delimiter=',') next(plots) x=[] y=[] for row in plots: x.append(float(row[1])) y.append(float(row[3])) plt.plot(x, y, 'ro',label="Original Data") x =

我想绘制数据点的趋势曲线。 我使用指数模型对这段代码进行了测试:

with open(file,'r') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
next(plots)
x=[]
y=[]
for row in plots:
    x.append(float(row[1]))
    y.append(float(row[3]))
plt.plot(x, y, 'ro',label="Original Data")
x = np.array(x, dtype=float) #transform your data in a numpy array of floats 
y = np.array(y, dtype=float) #so the curve_fit can work



def func(x, a, b, c):
    return (a*np.exp(-b*x)+c)

popt, pcov = curve_fit(func, x, y)
ypredict=func(x, *popt)

plt.plot(x, ypredict, '--', label="Fitted Curve")  
plt.legend(loc='upper left')
plt.show()
但我得到了这个结果:

]

问题


如何通过这些数据获得平滑的趋势曲线?

一种方法是,在打印之前,可以将
x.sort()
放入:

x.sort()
ypredict=func(x, *popt)
另一种方法是使用这样的东西(在我看来,对于情节来说更好)


然后对趋势线使用
x\u图
y\u图
,它看起来应该很好。问题很可能是
x
值不是单调的,因此直线图是按
x
中出现的顺序连接点

一种方式,您可以在打印前将
x.sort()
放入:

x.sort()
ypredict=func(x, *popt)
另一种方法是使用这样的东西(在我看来,对于情节来说更好)

然后对趋势线使用
x\u图
y\u图
,它看起来应该很好。问题很可能是
x
值不是单调的,因此直线图是按
x
中出现的顺序连接点