2017-04-16 122 views
1

类似于Excel的插值绘制我在Excel中的数据与流畅的线条和标记的散点图产生的身影我期待的类型。 Excel图的图像: Image of Excel plots在Python

但是,当试图在matplotlib中绘制数据时,我遇到了一些插值问题。我使用的是从SciPy的插值包,我已经尝试了各种不同的插值方法,包括spline interpolation and BarycentricInterpolatorsuggested previously。这些图显然要然而,Excel的地块产生非常不同:

spline interpolation and BarycentricInterpolator

我已经试过了样条插值不同的平滑和k值,而曲线变化的根本问题依然存在。

我怎么能产生类似于Excel的生产曲线拟合曲线?

感谢

回答

0

的问题是,你插线性比例数据,但预期成果看起来光滑对数刻度。

的想法将因此首先将数据转换为它的对数已进行对数尺度插值,然后进行插值。然后,您可以将它回到线性刻度,这样你可以重新绘制它的日志规模。

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() 

enter image description here