用光滑的线条和标记将我的数据在excel中绘制成散点图,生成我所期望的图形类型。Excel绘图图像:

然而,当试图用matplotlib绘制数据时,我遇到了一些插值问题。我正在使用来自SciPy的插补包,我尝试了一系列不同的插值方法,包括样条插值与BarycentricInterpolator作为以前的建议。然而,这些情节显然与excel制作的情节非常不同:

对于样条插值,我尝试过不同的平滑和k值,而曲线变化的根源问题仍然存在。
我怎样才能产生一条拟合的曲线,类似于excel制作的情节?
谢谢
发布于 2017-04-16 13:17:31
问题是,你在线性尺度上插值数据,但期望结果在对数尺度上看起来是平滑的。
因此,这个想法是先将数据转换为对数,然后再执行插值,从而在日志尺度上执行插值。然后,您可以将其转换回线性刻度,这样您就可以再次在日志比例尺上绘制它。
from scipy.interpolate import interp1d, Akima1DInterpolator
import numpy as np
import matplotlib.pyplot as plt
x = np.array([0.02,0.2,2,20,200])
y = np.array([700,850,680,410, 700])
plt.plot(x,y, marker="o", ls="")
sx=np.log10(x)
xi_ = np.linspace(sx.min(),sx.max(), num=201)
xi = 10**(xi_)
f = interp1d(sx,y, kind="cubic")
yi = f(xi_)
plt.plot(xi,yi, label="cubic spline")
f2 = Akima1DInterpolator(sx, y)
yi2 = f2(xi_)
plt.plot(xi,yi2, label="Akima")
plt.gca().set_xscale("log")
plt.legend()
plt.show()

https://stackoverflow.com/questions/43436035
复制相似问题