2017-04-16 10 views
1

データをExcelでプロットすると、スムーズな線とマーカーを持つ散布図として、予想される図形が生成されます。 Excelプロットの画像: Image of Excel plotsPythonでのExcelのような補間

しかし、matplotlibでデータをプロットしようとすると、補間に関するいくつかの問題が発生しています。私はSciPyの補間パッケージを使用していますが、spline interpolation and BarycentricInterpolatorなどのさまざまな補間方法を試しました。suggested previouslyです。これらのプロットは明らかしかしエクセル生産のプロットに非常に異なっている:曲線が根本的な問題がまだ存在変わりながら

spline interpolation and BarycentricInterpolator

私は、スプライン補間のためのさまざまな平滑化とkの値を試してみました。

エクセルプロットに似たフィットカーブを作成するにはどうすればよいですか?

おかげ

答えて

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