泰勒?qǐng)D繪制的核心思想是設(shè)計(jì)一個(gè)只有第一象限的極坐標(biāo),并將方差,相關(guān)系數(shù)進(jìn)行捆綁,通過轉(zhuǎn)化為極坐標(biāo)系坐標(biāo)進(jìn)行繪制。為了實(shí)現(xiàn)泰勒?qǐng)D的繪制,我設(shè)計(jì)了兩個(gè)函數(shù):

成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元遠(yuǎn)安做網(wǎng)站,已為上家服務(wù),為遠(yuǎn)安各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
set_tayloraxes(fig, location=111) 和plot_taylor(axes, refsample, sample, args, *kwargs)
set_tayloraxes()函數(shù)用于建立一個(gè)泰勒?qǐng)D的坐標(biāo)系,這個(gè)自定義函數(shù)一般情況下不建議修改,每一個(gè)參數(shù)都是經(jīng)過多次調(diào)試得到的,很可能牽一發(fā)動(dòng)全身。因此,將繪圖部分的獨(dú)立成為了plot_taylor函數(shù)(),這部分函數(shù)較為簡(jiǎn)單,目的就是將需要繪圖的數(shù)據(jù),轉(zhuǎn)換為極坐標(biāo)系坐標(biāo),通過plot函數(shù)將散點(diǎn)打在泰勒?qǐng)D上,這個(gè)函數(shù)模塊較為簡(jiǎn)單,可以根據(jù)自己的輸入數(shù)據(jù)情況進(jìn)行調(diào)整。
下面介紹下函數(shù)的具體用法:
輸入:
fig: 需要繪圖的figure
rect:圖的位置,如111為1行1列第一個(gè),122為1行2列第2個(gè)
輸出:
polar_ax:泰勒坐標(biāo)系
輸入:
axes : setup_axes返回的泰勒坐標(biāo)系
refsample :參照樣本
sample :評(píng)估樣本
args, *kwargs :plt.plot()函數(shù)的相關(guān)參數(shù),設(shè)置點(diǎn)的顏色,形狀等等。
下面給出示例:
lambda就是匿名函數(shù),就是沒有名字的函數(shù), 簡(jiǎn)便實(shí)用 ,來(lái)自于于函數(shù)式編程的概念(這個(gè)不懂自己谷歌); 連java7好像都加這個(gè)...
舉個(gè)例子
一般的函數(shù)是這樣:
def f(x):
return x+1
這樣使用 print f(4)
用lambda的話,寫成這樣:
g = lambda x : x+1
這樣使用 print g(4)
1、首先在python軟件中,創(chuàng)建一個(gè)響應(yīng)鼠標(biāo)的自定義函數(shù),當(dāng)鼠標(biāo)在畫布上面點(diǎn)擊一下,就畫一個(gè)圓。
2、創(chuàng)建一個(gè)畫布,背景是白色:img=np.ones((365,500,3),np.uint8)*255。
3、然后創(chuàng)建一個(gè)窗口:cv2.namedWindow('image')。當(dāng)鼠標(biāo)在這個(gè)窗口里面的時(shí)候,上面的自定義函數(shù)會(huì)響應(yīng)鼠標(biāo)。
4、開始一個(gè)while循環(huán),每次在image窗口里面點(diǎn)擊鼠標(biāo),就會(huì)畫一個(gè)圓。
5、執(zhí)行程序之后,在畫布上隨機(jī)的點(diǎn)擊鼠標(biāo),就可以得到彩色的圓。
在函數(shù)擬合中,如果用p表示函數(shù)中需要確定的參數(shù),那么目標(biāo)就是找到一組p,使得下面函數(shù)S的值最小:
這種算法稱為最小二乘法擬合。Python的Scipy數(shù)值計(jì)算庫(kù)中的optimize模塊提供了 leastsq() 函數(shù),可以對(duì)數(shù)據(jù)進(jìn)行最小二乘擬合計(jì)算。
此處利用該函數(shù)對(duì)一段弧線使用圓方程進(jìn)行了擬合,并通過Matplotlib模塊進(jìn)行了作圖,程序內(nèi)容如下:
Python的使用中需要導(dǎo)入相應(yīng)的模塊,此處首先用 import 語(yǔ)句
分別導(dǎo)入了numpy, leastsq與pylab模塊,其中numpy模塊常用用與數(shù)組類型的建立,讀入等過程。leastsq則為最小二乘法擬合函數(shù)。pylab是繪圖模塊。
接下來(lái)我們需要讀入需要進(jìn)行擬合的數(shù)據(jù),這里使用了 numpy.loadtxt() 函數(shù):
其參數(shù)有:
進(jìn)行擬合時(shí),首先我們需要定義一個(gè)目標(biāo)函數(shù)。對(duì)于圓的方程,我們需要圓心坐標(biāo)(a,b)以及半徑r三個(gè)參數(shù),方便起見用p來(lái)存儲(chǔ):
緊接著就可以進(jìn)行擬合了, leastsq() 函數(shù)需要至少提供擬合的函數(shù)名與參數(shù)的初始值:
返回的結(jié)果為一數(shù)組,分別為擬合得到的參數(shù)與其誤差值等,這里只取擬合參數(shù)值。
leastsq() 的參數(shù)具體有:
輸出選項(xiàng)有:
最后我們可以將原數(shù)據(jù)與擬合結(jié)果一同做成線狀圖,可采用 pylab.plot() 函數(shù):
pylab.plot() 函數(shù)需提供兩列數(shù)組作為輸入,其他參數(shù)可調(diào)控線條顏色,形狀,粗細(xì)以及對(duì)應(yīng)名稱等性質(zhì)。視需求而定,此處不做詳解。
pylab.legend() 函數(shù)可以調(diào)控圖像標(biāo)簽的位置,有無(wú)邊框等性質(zhì)。
pylab.annotate() 函數(shù)設(shè)置注釋,需至少提供注釋內(nèi)容與放置位置坐標(biāo)的參數(shù)。
pylab.show() 函數(shù)用于顯示圖像。
最終結(jié)果如下圖所示:
用Python作科學(xué)計(jì)算
numpy.loadtxt
scipy.optimize.leastsq
分享文章:python定義函數(shù)作圖 python定義函數(shù)的規(guī)則
網(wǎng)站URL:http://chinadenli.net/article48/dojodhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、微信小程序、網(wǎng)站內(nèi)鏈、建站公司、企業(yè)網(wǎng)站制作、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)