我有以下图表,我想用Python和Matplotlib将其数字化为高质量的出版物级别的图表:
我已经尝试了三种不同的方法来拟合这些数据点。第一种方法是使用
我的第二次尝试是使用
有没有人有一个好的方法来做到这一点?也许我最好尝试在IPE或其他什么地方做这个?谢谢!
我使用了一个数字化程序,从其中一个数据集中获取了一些样本:
x_data = np.array([
1,
1.2371,
1.6809,
2.89151,
5.13304,
9.23238,
])
y_data = np.array([
0.0688824,
0.0490012,
0.0332843,
0.0235889,
0.0222304,
0.0245952,
])
我已经尝试了三种不同的方法来拟合这些数据点。第一种方法是使用
scipy.interpolate import spline
通过数据点绘制样条曲线,结果如下(实际数据点用蓝色标记):
显然这个结果不好。我的第二次尝试是使用
scipy.optimize import curve_fit
绘制曲线拟合,使用一系列不同阶数的多项式,即使是四次多项式的答案也是无用的(低阶的更加无用):
最后,我使用scipy.interpolate import interp1d
来尝试在数据点之间进行插值。线性插值显然会产生预期的结果,但线条是直的,这个练习的整个目的是得到一个漂亮的平滑曲线:
如果我使用三次插值,结果是垃圾,但二次插值结果略好:
但还不够好,我认为interp1d
不能进行高阶插值。有没有人有一个好的方法来做到这一点?也许我最好尝试在IPE或其他什么地方做这个?谢谢!