【发布时间】:2021-01-28 20:58:02
【问题描述】:
我的数据点是:
x =[5.00E-07, 1.40E-06, 4.10E-06, 1.25E-05, 3.70E-05, 1.11E-04, 0.33E-04, 1.00E-03]
y= [494.55, 333.4666667, 333.3333333, 333.1, 303.4966667, 197.7533333, 66.43333333, 67.715]
我的绘图上的 x 轴必须是指数的!
我想制作一条回归线,例如添加的图像,呈 S 形。我该怎么做(在 matlab 或 python 中)? IMG 更新:我试过了:
import matplotlib.pyplot as plt
from scipy.interpolate import make_interp_spline
import numpy as np
#create data
x = np.array([5.00E-07, 1.40E-06, 4.10E-06, 1.25E-05, 3.70E-05, 1.11E-04, 3.33E-04, 1.00E-03])
y= np.array([494.55, 333.4666667, 333.3333333, 333.1, 303.4966667, 197.7533333, 66.43333333, 67.715])
#define x as 200 equally spaced values between the min and max of original x
xnew = np.linspace(x.min(), x.max(), 100)
#define spline
spl = make_interp_spline(x, y, k=2)
y_smooth = spl(xnew)
#create smooth line chart
plt.plot(x,y, 'o', xnew, y_smooth)
plt.xscale("log")
plt.show()
我的结果是:results 我怎样才能使它更平滑?不同的 k 并不能使它变得更好。
【问题讨论】:
-
您在代码中所做的是插值,而不是回归。
-
查看我的编辑。我认为最好的方法是插值 log(x) 并绘制 y vs log(x)
标签: python matlab plot regression scatter