2017-04-16 120 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