本文實例講述了Python實現曲線擬合操作。分享給大家供大家參考,具體如下:
這兩天學習了用python來擬合曲線。
本人比較比較懶,所以下載的全部是exe文件來安裝,安裝按照順利來安裝。自動會找到python的安裝路徑,一直點下一步就行。還有其他的兩種安裝方式:一種是解壓,一種是pip。我沒有嘗試,就不亂說八道了。
沒有ArcGIS 環境的,可以不看下面這段話了。
在配置環境時遇見一個小波折,就是原先電腦裝過ArcGIS10.2 ,所以其會默認安裝python2.7,而且python是32位的。且其目錄為C:/Python27/ArcGIS10.2,所以引用環境變量時,要注意。并且在其引用的工具包中本身包含numpy,matplotlib的包。還是很方便的。但是因為之前想用PyQT來做曲線擬合的界面,安裝QT時總是失敗,所以最后放棄使用這個。在安裝新的python時注意要把路徑寫到上面這個路徑前面,意思就是說在安裝上面的包的時候會找默認python路徑。我新安裝python路徑為C:/Python2,要不然就會找到ArcGIS那個python包路徑下了。
1. 安裝包
python2.7 (32位)https://www.python.org/downloads/
numpy-1.8.1-win32-superpack-python2.7
scipy-0.15.1-win32-superpack-python2.7
matplotlib-1.3.1.win32-py2.7
安裝過程中遇見的問題
提示
numpy是Python的一種開源的數值計算擴展,數學計算很方便。
scipy是一款方便、易于使用、專為科學和工程設計的Python工具包.它包括統計,優化,整合,線性代數模塊,傅里葉變換,信號和圖像處理,常微分方程求解器等等.這次還沒用到,看介紹很強大,是numpy的升級版。
matplotlib是Python的一種開源的擴展可以繪制各種各種的圖表。
曲線擬合的例子
import matplotlib.pyplot as pltimport mathimport numpy as npimport randomimport csvplt.rcParams['font.sans-serif'] = ['SimHei']#設置顯示中文fig = plt.figure()ax = fig.add_subplot(111)#將畫布分割成1行1列,圖像畫在從左到右從上到下的第1塊#階數為6階order=6#生成曲線上的各個點dataMat = np.loadtxt(open("c://yandu.csv","rb"),delimiter=",",skiprows=0)size=dataMat.shapenum=size[0]trandata=np.transpose(dataMat)#矩陣轉置xa=trandata[0]#得到天數數組(橫坐標)ya=trandata[1]#實測鹽度值數組#數據篩選,去除鹽度值為零的,提高擬合精度i=0x=[]y=[]for yy in ya: if yy>0: xx=xa[i] i+=1 x.append(xx) y.append(yy)#繪制原始數據ax.plot(x,y,label=u'原始數據',color='m',linestyle='',marker='.')#計算多項式c=np.polyfit(x,y,order)#擬合多項式的系數存儲在數組c中yy=np.polyval(c,x)#根據多項式求函數值#進行曲線繪制x_new=np.linspace(0, 365, 2000)f_liner=np.polyval(c,x_new)#ax.plot(x,y,color='m',linestyle='',marker='.')ax.plot(x_new,f_liner,label=u'擬合多項式曲線',color='g',linestyle='-',marker='')# labels標簽設置ax.set_xlim(0, 366)ax.set_xlabel(u'天')ax.set_ylabel(u'鹽度')ax.set_title(u'鹽度的日變化', bbox={'facecolor':'0.8', 'pad':5})ax.legend()plt.show()
新聞熱點
疑難解答