Matplotlib 可视化我的popt输出产生一条直线,我想可视化popt输出以确保其正确。我是初学者

Matplotlib 可视化我的popt输出产生一条直线,我想可视化popt输出以确保其正确。我是初学者,matplotlib,scipy,curve-fitting,exponential,scipy-optimize,Matplotlib,Scipy,Curve Fitting,Exponential,Scipy Optimize,我的popt变量输出一条垂直直线(请参见链接)。我想找到最适合我的数据的正确指数线 我首先在excel中进行了指数运算,得到了一个精确的公式,即712e^0.0001*x 我希望将popt值可视化,类似于excel中的,以确保我的popt值在视觉上有意义 import matplotlib.pyplot as plt from scipy.optimize import curve_fit import numpy as np import pandas as pd plot = plt.s

我的popt变量输出一条垂直直线(请参见链接)。我想找到最适合我的数据的正确指数线

我首先在excel中进行了指数运算,得到了一个精确的公式,即712e^0.0001*x

我希望将popt值可视化,类似于excel中的,以确保我的popt值在视觉上有意义

import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
import pandas as pd


plot = plt.scatter(df.No_of_patients, df.No_of_booked_app)
plt.xlabel("No_of_patients")
plt.ylabel("No_of_booked_app")
plt.xlim(-500, 16000)
plt.ylim(-1000, 7000)
x1 = [1, 2, 3, 4, 5 ,6 ,7 ,8, 9, 10]
y1 = [2, 4, ,8 , 12, 20, 35, 40, 55, 70, 90]
df = pd.DataFrame(zip(x1, y1), columns = ['x1', 'y1'] )



def func(x, a, b, p0=None):
   return a*np.exp(b*x)

x = df.x1
y = df.y1


popt, popcov = curve_fit(func,  x,  y, p0=[1,0], maxfev = 5000)



best_fit = plt.plot(func(x,*popt), 'y')

这是我想要的输出:


您忘记将x变量传递给plot命令。因此,只需使用以下符号,其中您通过
x
,并使用
o
作为市场符号

best_fit = plt.plot(x, func(x,*popt), 'yo')

你为什么说Excel给了你糟糕的结果?你用什么标准来确定它?为什么你把它做成一个数据框,却从不使用它?我选择了非常接近的点,实际上是在线的点,并输入excel给我的公式,这非常有用different@MadPhysicist我添加了数据框,如果需要的话,我不确定解决方案是什么。虽然它可以省去一个步骤,但如果你必须在下一步打开它,它的效果会适得其反