Python科學(xué)計(jì)算與數(shù)據(jù)處理-繪制精美的圖表_第1頁
Python科學(xué)計(jì)算與數(shù)據(jù)處理-繪制精美的圖表_第2頁
Python科學(xué)計(jì)算與數(shù)據(jù)處理-繪制精美的圖表_第3頁
Python科學(xué)計(jì)算與數(shù)據(jù)處理-繪制精美的圖表_第4頁
Python科學(xué)計(jì)算與數(shù)據(jù)處理-繪制精美的圖表_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Python科學(xué)計(jì)算與數(shù)據(jù)處理一繪制精美的圖表Matplotlib是python中最著名的繪圖庫。matlab提供了一套類似于MATLAB的命令A(yù)PI,非常適合交互式繪圖。而且可以作為繪圖控件方便地嵌入到圖形用戶界面應(yīng)用程序中。它的文檔非常完整,在圖庫頁面中有數(shù)百個(gè)縮略圖。打開后,有源程序。因此,如果你需要畫一個(gè)特定類型的地圖,你基本上可以通過瀏覽、復(fù)制和粘貼來完成。顯示頁面地址:快速繪圖快速繪圖matlabplot庫的pyplot子庫提供了一個(gè)類似MATLAB的繪圖API,方便用戶快速繪制三維圖表。(matplotlibsimpleplotpy)pylab模塊matplotlib還提供了一個(gè)名為pylab的模塊,該模塊包含了numpy和pyplot中常用的許多功能,以方便用戶快速計(jì)算和繪制,并可用于IPython中的快速交互使用??焖倮L圖庫中的快速繪圖函數(shù)庫可以通過以下語句加載:下一步調(diào)用圖形創(chuàng)建一個(gè)繪圖對(duì)象并使其成為當(dāng)前繪圖對(duì)象。figsize參數(shù)允許您指定繪圖對(duì)象的寬度和高度單位。英寸dpi參數(shù)指定繪圖對(duì)象的分辨率,即每英寸多少像素。默認(rèn)值為。因此,本例中創(chuàng)建的圖表窗口的寬度為*二像素。IMPORTMATplotLIBPYPLOTASPTLTPLTFIGURE(FigureSize=(,))也可以在不創(chuàng)建繪圖對(duì)象的情況下進(jìn)行快速繪圖。直接調(diào)用下面的PLOT函數(shù)直接繪制一個(gè)繪圖matplotlib將自動(dòng)創(chuàng)建一個(gè)繪圖對(duì)象。如果需要同時(shí)繪制多個(gè)圖表,可以通過傳遞一個(gè)整數(shù)參數(shù)來指定圖形圖標(biāo)的序列號(hào)。如果具有指定序列號(hào)的圖形對(duì)象已經(jīng)存在,它不會(huì)創(chuàng)建新對(duì)象,而只會(huì)使其成為當(dāng)前圖形對(duì)象。以下兩行程序通過調(diào)用繪圖函數(shù)在當(dāng)前繪圖對(duì)象中繪制:繪圖繪圖繪圖(x,y,label=$sin(x)$,color=red,linewidth=)繪圖繪圖繪圖(x,z,b,label=$cos(x)$)調(diào)用繪圖函數(shù)的方法很靈活。在第一句傳遞x,y數(shù)組進(jìn)行繪圖后,使用關(guān)鍵參數(shù)指定各種屬性:bulllabel:為繪制的曲線命名。這個(gè)名字顯示在圖例中。只要在字符串前后添加##$###符號(hào)matplotlib,就將使用其嵌入式latex引擎繪制的數(shù)學(xué)公式。Bullcolor:指定曲線的顏色bulllinewidth:指定曲線的寬度第三個(gè)參數(shù)lsquorsquob''指定曲線的顏色和線型Pltlot(x,y,label=$sin(x)$,color=red,lineWidth=)Pltlot(x,z,b,Label=$cos(x)$)快速繪制下一步,繪圖對(duì)象的各種屬性是通過一系列函數(shù)來設(shè)置的:bulllabel:設(shè)置X軸和Y軸的文本bulltitle:設(shè)置圖表的標(biāo)題bullylim:設(shè)置Y軸的范圍bulllegend:顯示圖表最后,調(diào)用pltshow()來顯示所有創(chuàng)建的繪圖對(duì)象。PLTLabel(time(s))PLTLabel(volt)PLTtitle(pyplotfirstexample)PLTlim(,)pltllegend()quickdrawingimportnumppyanpmportationplotlibpyplotaspltx=NPLspace(,)y=npsin(x)z=npcos(x**)PLTfigsize=(,))pltplot(x,y,label=$sin(x)$,color=red,linewidth=)PLTPLTplot(xz,b,Label=$cos(x)圖像格式由圖像文件的擴(kuò)展名決定。以下程序?qū)?dāng)前圖表保存為testpng,并通過dpi參數(shù)指定圖像的分辨率,以便輸出圖像的寬度為X二像素。事實(shí)上,您不需要調(diào)用show()來顯示圖表。您可以使用保存圖()將圖表直接保存為圖像文件。使用這種方法,您可以很容易地編寫程序RunmatPlolibSimplePlotsAthaveFig(TestPng,DPI=)來快速繪制多軸圖。一個(gè)繪圖對(duì)象(圖形)可以包含多個(gè)軸。在MatPlotLib中,您可以使用軸來表示繪圖區(qū)域,這可以理解為子圖。在上面的第一個(gè)示例中,繪圖對(duì)象僅包括一個(gè)軸,因此僅顯示一個(gè)軸(軸)。您可以使用子圖功能快速繪制多軸圖表。子圖函數(shù)的調(diào)用形式如下:子圖(numRows,numCols,Plotnum)快速繪圖子圖將整個(gè)繪圖區(qū)域分成Numrows行和Numcols子區(qū)域列,然后從左到右從上到下對(duì)每個(gè)子區(qū)域進(jìn)行編號(hào)。左上角子區(qū)域的編號(hào)是。如果三個(gè)數(shù)字numRowsnumCols和plotNum小于,它們可以縮寫為整數(shù),例如子圖()和子圖(一)是相同的。子圖在由plotNum指定的區(qū)域中創(chuàng)建軸對(duì)象。如果新創(chuàng)建的軸與先前創(chuàng)建的軸重疊,則先前的軸將被刪除。以下快速繪制過程創(chuàng)建總共有軸的行和列。通過axisbg參數(shù)為每個(gè)軸設(shè)置不同的背景顏色。如果希望軸占據(jù)整個(gè)行或列,可以調(diào)用子圖形:對(duì)于IDX,ColorineNumerate(RGBYCK):PLT子圖形(IDX,Axisbg=color)pltshow()pltsubplot()#第一行左pltsubplot()#第一行右pltsubplot()#第二個(gè)全行pltshow()快速繪圖當(dāng)繪圖對(duì)象中有多個(gè)軸時(shí),可以通過工具欄中的“配置子圖形”按鈕交互式調(diào)整軸間距以及軸與邊框之間的距離。如果你想在程序中進(jìn)行調(diào)整,你可以調(diào)用subplotsadjust函數(shù),它有幾個(gè)關(guān)鍵參數(shù),如左、右、下、上、下空間、空間等等。這些參數(shù)的值是介于之間的小數(shù),它們是由繪圖區(qū)域的寬度和高度標(biāo)準(zhǔn)化的坐標(biāo)或長度??焖倮L制子圖()返回它創(chuàng)建的軸對(duì)象。您可以用變量保存它,然后用sca()替換它們,使其成為當(dāng)前的Axes對(duì)象,并調(diào)用plot()在其中繪制。如果需要同時(shí)繪制多個(gè)圖表,可以向Figure()傳遞一個(gè)整數(shù)參數(shù),以指定Figure對(duì)象的序列號(hào)。如果序列號(hào)指定的圖形對(duì)象已經(jīng)存在,則不會(huì)創(chuàng)建新對(duì)象,而只會(huì)創(chuàng)建當(dāng)前圖形對(duì)象。以下過程演示了如何依次在不同圖形的不同子圖形中繪制曲線。(matplotlibmultifigurepy)快速繪圖首先,通過圖(),創(chuàng)建了兩個(gè)分別具有和序列號(hào)的圖表。然后,在圖中并排創(chuàng)建兩個(gè)子圖,并用變量ax和ax保存。ImportNumPyasnImportMatchPlatLibPyPlotaspltPlotFigure()#創(chuàng)建圖表圖形()#創(chuàng)建圖表AX二繪圖子圖形()#創(chuàng)建子圖形AX二繪圖子圖形()#創(chuàng)建子圖形X=圖形空間(,),在圖表中快速繪制調(diào)用循環(huán)中的圖形()以使圖表成為當(dāng)前圖表并在其中繪制。然后調(diào)用sca(ax)和sca(ax)分別將子圖ax和ax作為當(dāng)前子圖并繪制在其中。當(dāng)它們成為當(dāng)前子圖時(shí),包含它們的圖將自動(dòng)成為當(dāng)前圖,因此不需要調(diào)用figure()來依次在圖和圖的兩個(gè)子圖之間切換,并逐漸為iinxrange()添力口新曲線:pltfigure()#選擇圖pltplot(x,npexp(I*x))pltsca(ax)#選擇圖的子圖pltplot(x)。Nspin(i*x))pltsca(ax)#選擇圖表的子圖pltlot(x,npcos(i*x))pltltshow()快速繪圖軸設(shè)置軸容器包括軸刻度線、刻度線標(biāo)簽、坐標(biāo)網(wǎng)格和軸標(biāo)題等。該標(biāo)度包括分別由getmajorticks()和getminorticks()方法獲得的主標(biāo)度和子標(biāo)度。每個(gè)刻度線都是包含實(shí)際刻度線和刻度標(biāo)簽的 XTick或YTick對(duì)象。為了便于訪問刻度線和文本軸對(duì)象,提供了getticklabels()和getticklines()方法來直接獲取刻度線和刻度線。下面的示例繪制并獲取當(dāng)前子圖的X軸對(duì)象軸:PLTPLOT(,一)PLTSHOW()AXIS=PLTGCA()*八*£快速繪制以獲取軸對(duì)象的刻度位置列表:下面是axis對(duì)象的刻度標(biāo)簽和標(biāo)簽中的文本:axisgetticklocs()數(shù)組(,,,,)axisgetticklabels()#獲取刻度標(biāo)簽列表alistoftextmajorticklabelobjectsxgettext()forxinasgetticklabels()#獲取文本字符串u##,u##??梢钥闯?,在X軸上總共有個(gè)刻度線。由于沒有次要刻度線,次要刻度線列表的長度為:X軸上刻度線的配置可以通過使用pyplot模塊中的xticks()來完成:axisgetticklines()Alistalflinedditrinesobjectsaxisetcklines(minor=true)#獲取次要刻度線列表alistafflinedditrinesobjectspltxticks(fontsize=,color=red,rotations)在上面的示例中,次要刻度線列表為空,因?yàn)橛糜谟?jì)算次要刻度線位置的對(duì)象默認(rèn)為定位器計(jì)算主標(biāo)尺位置的對(duì)象是自動(dòng)定位儀,它根據(jù)當(dāng)前配置(如縮放)自動(dòng)計(jì)算標(biāo)尺的位置。matplotlib提供了各種定位器類來配置刻度線的位置,還提供了格式化程序類來控制刻度標(biāo)簽的顯示。以下程序?qū)軸的主刻度設(shè)置為圓周率,副刻度設(shè)置為圓周率,主刻度上的標(biāo)簽用數(shù)學(xué)符號(hào)顯示圓周率。(matplotlibaxistextpy自定義坐標(biāo)軸的比例和文本)與快速繪圖和比例定位以及文本格式相關(guān)的類在matplotlibticker模塊中定義,程序從該模塊中加載兩個(gè)類:MultipleLocationon。在快速繪圖程序中,與比例值相對(duì)應(yīng)的比例文本是通過piformatter()(復(fù)雜)defpiformatter(x,pos)計(jì)算出來的二andm==:m,n=m,nifm==:returnIFF==andn==:return$pi$IFN==:returnNR$dpi$mifm==:returnNR$frac{pi}6o8emuu$nreturnr$frac{dpi}eo6iy6o$(m,n)快速繪圖X=NPL空間 ( , *nppi , ,endpoint=True)Xarray(,,,,,,,,,,,,,,,)pltxticks(,,,,,,,,,,r#$$,r#$pir#$pi$#,r#$pi$#)#r#$frac{pi}{}$#,快速繪制將主亥U度線、次刻度線放在指定值的整數(shù)倍刻度上。使用指定的函數(shù)計(jì)算縮放文本。它將刻度值和刻度的序列號(hào)作為參數(shù)傳遞給函數(shù)axxaxissetmajorlocator(nppi))axxaxissetminollocator(nppi),該函數(shù)計(jì)算刻度文本axxaxissetmajorrformatter(funcformatter)(piformatter))#設(shè)置范圍plylim(,)plklim,Npmax(x))快速繪制plsubflotsadjust(bottom=)#將繪圖的下邊緣設(shè)置為plgrid()#開放網(wǎng)格#主刻度是piaxxaxissetmajorritor(NPPI))#主刻度文本使用piformatter函數(shù)計(jì)算axxaxissetmajorritorformatter(funcformatter)(piformatter))#次亥^度是piaxxaxissetminorlocator(多定位器(NPPI))#設(shè)置刻度文本的大小fortickinaxxaxisgetmajorritockets():tickelableftfontsize()plshow()快速繪制讓我們看看如何在對(duì)數(shù)坐標(biāo)系中繪圖。繪制對(duì)數(shù)坐標(biāo)有三個(gè)函數(shù):半對(duì)數(shù)()、半對(duì)數(shù)()和對(duì)數(shù)(),當(dāng)x軸是對(duì)數(shù)、Y軸是對(duì)數(shù)且兩個(gè)軸都是對(duì)數(shù)時(shí),它們繪制圖形。繪圖功能簡介以下程序使用不同的坐標(biāo)系繪制低通濾波器的頻率響應(yīng)曲線。左上圖是由圖()繪制的算術(shù)坐標(biāo)系,右上圖是由半對(duì)數(shù)()繪制的X軸對(duì)數(shù)坐標(biāo)系,左下圖是由半對(duì)數(shù)()繪制的Y軸對(duì)數(shù)坐標(biāo)系,右下圖是由對(duì)數(shù)()繪制的雙對(duì)數(shù)坐標(biāo)系。由雙對(duì)數(shù)坐標(biāo)系表示的頻率響應(yīng)曲線通常稱為波特圖。(matplotliblogpy)importnumpyasymportantmatplotlibplotaspltw=nplinspace(,)p=npabs((j*w))#低通濾波器頻率響應(yīng)曲線功能介紹。linewidth=)pltylim( , )pltsubplot()pltsemilogx(w , p ,linewidth=)pltylim( , )pltsubplot()pltsemilogy(w , p ,linewidth=)pltylim(,)pltsubplot()PLTglog(w,p,Linewidth=)pltylim(,)pltshow()繪圖函數(shù)簡介繪圖函數(shù)簡介極坐標(biāo)系統(tǒng)極坐標(biāo)系統(tǒng)與笛卡爾(XY)坐標(biāo)系完全不同。極坐標(biāo)系統(tǒng)中的點(diǎn)由夾角和距中心點(diǎn)的距離表示。以下程序繪制極坐標(biāo)圖(matplotlibpolarpy)。ImportNumPyanImportMatplotlibplotasplttheta=nParange(,*NPPI),在繪圖函數(shù)介紹程序中調(diào)用子圖()創(chuàng)建子圖時(shí),通過將極坐標(biāo)參數(shù)設(shè)置為“真”來創(chuàng)建極坐標(biāo)子圖。然后調(diào)用plot()在極坐標(biāo)子圖中繪圖。您也可以使用極坐標(biāo)()直接創(chuàng)建極坐標(biāo)子圖,并在其中繪制曲線。PLT子圖(,POLAR=TRUE)PLT圖(THETA,*NPONESLIKE(THETA),LINEWIDTH=)PLT圖(*THETA,THETA,LINEWIDTH=)繪圖功能簡介rgrids()設(shè)置同心圓網(wǎng)格的半徑大小和文本注釋的角度。因此,右邊的虛線圓具有三個(gè)半徑、并且這些字符分別沿著deg線排列。Thetagrids()設(shè)置輻射網(wǎng)格的角度,因此右圖中只有兩個(gè)輻射角度分別為deg和deg。pltsubplot(,polar=True)pltplot(theta,*npcos(*theta),linewidth=)pltplot(theta,*npcos(*theta),linewidth=)PLTgrids(nparange(,),angle=)pltthetagrids(,)pltshow()繪圖函數(shù)簡介繪圖函數(shù)簡介直方圖使用每列的長度來指示值的大小。它們通常用于比較兩組或多組值。以下程序從文件中讀取中國人口的年齡分布數(shù)據(jù),并使用直方圖比較男性和女性的年齡分布。(matplotlibbarpy繪制年齡分布圖,比較男性和女性人口)通過導(dǎo)入ImportNumPyasInpImportMatplotlibpyplotslt繪制函數(shù)讀取的數(shù)據(jù)中的第一列是年齡,它將用作直方圖的橫坐標(biāo)。首先,計(jì)算直方圖中每一列的寬度。因?yàn)槊總€(gè)年齡組要畫兩列,所以列的寬度應(yīng)該小于年齡組的一半。這里,柱子的寬度是這個(gè)年齡組的兩倍。Data=nloadtxt(Chinapopulationtext)width=(data,data,*drawingfunctionintroduction調(diào)用bar()繪制男性人口分布直方圖。它的第一個(gè)參數(shù)是每列左邊緣的橫坐標(biāo)。為了將男性和女性列放在年齡刻度的中心,讓每列左側(cè)的橫坐標(biāo)為年齡減去列的寬度。Bar()的第二個(gè)參數(shù)為每列的高度指定所有列的寬度,第三個(gè)參數(shù)為。當(dāng)?shù)谌齻€(gè)參數(shù)是序列時(shí),可以為每列指定一個(gè)寬度。Pitfigure(figuresize=(,))pltfar(data:,width,data:,e,width,color=b,label=umen)繪圖功能簡介繪制女性人口分布直方圖。這里,列的左邊緣橫坐標(biāo)是基于年齡的,因此女性和男性的人口分布以年齡為中心。由于bar()不會(huì)自動(dòng)修改顏色,因此兩個(gè)直方圖的顏色是通過程序中的顏色參數(shù)設(shè)置的。Pltlbar(數(shù)據(jù):,,data:,e,width,color=r,label=ufemal)pltxlim(width),pltlxlabel(uage)pltlabel(upopulation(tenmillion))pltllegend()pltltshow()繪圖函數(shù)簡介繪圖函數(shù)簡介哈希映射使用plot()繪圖時(shí),如果指定的樣式參數(shù)僅繪制數(shù)據(jù)點(diǎn),則繪制哈希映射。例如:但是,用這種方法繪制的點(diǎn)不能單獨(dú)指定顏色和大小。散布()繪制的散列圖可以指定每個(gè)點(diǎn)的顏色和大小。下面的程序演示了散點(diǎn)圖()的用法。散點(diǎn)圖()的前兩個(gè)參數(shù)是數(shù)組分別指定每個(gè)點(diǎn)的X軸和Y軸的坐標(biāo)。由S參數(shù)指定的點(diǎn)的大小與點(diǎn)的面積成比例。它可以是一個(gè)數(shù)字importnumpyasynpmportantmatchplotlibplotaspltpltfigure(figuresize=(,))x=nprandomrandom()y=nprandomrandom()PLTstatter(xy,s=x*,c=y,marker=(,),alpha=,Lw=,facecolors=none)pltxlim(,)pltylim(,)pltshow()繪圖函數(shù)簡介指定所有點(diǎn)的大小,或者一個(gè)數(shù)組分別指定每個(gè)點(diǎn)的大小。C參數(shù)指定每個(gè)點(diǎn)的顏色可以是數(shù)字或數(shù)組。這里,一維數(shù)組用于為每個(gè)點(diǎn)指定一個(gè)值。顏色映射表中的每個(gè)值對(duì)應(yīng)一種顏色。在默認(rèn)的顏色映射表中,藍(lán)色對(duì)應(yīng)于最小值,紅色對(duì)應(yīng)于最大值。當(dāng)C參數(shù)是一個(gè)形狀為(n)、(n)或(口)的二維數(shù)組時(shí),它直接表示每個(gè)點(diǎn)的RGB顏色。標(biāo)記參數(shù)設(shè)置點(diǎn)的形狀可以是表示形狀的字符串或表示多邊形的兩個(gè)元素的元組。第一個(gè)元素表示多邊形的邊數(shù)。繪圖功能簡介。第二個(gè)元素表示多邊形的樣式。數(shù)值范圍為、、、。無論邊數(shù)多少,多邊形表示星形,星形表示圓形。最后,通過alpha參數(shù)設(shè)置點(diǎn)的透明度設(shè)置線寬,lw參數(shù)設(shè)置線寬lw是線寬的縮寫。Facecolors參數(shù)為none表示哈希點(diǎn)沒有填充顏色。繪圖功能簡介繪圖功能簡介圖像imread()和imshow()提供簡單的圖像加載和顯示功能,imread()可以從圖像文件中讀取數(shù)據(jù),以獲得表示圖像的NumPy數(shù)組。它的第一個(gè)參數(shù)是文件名或文件對(duì)象格式參數(shù),它指定圖像類型。如果省略,圖像類型由文件擴(kuò)展名決定。對(duì)于灰度圖像,它返回帶有形狀的數(shù)組;對(duì)于彩色圖像,它返回帶有形狀的數(shù)組。其中m是圖像的高度,n是圖像的寬度,c是或,表示圖像的通道數(shù)。下面的程序從lenajpg中讀取圖像數(shù)據(jù),得到一個(gè)數(shù)組Img,它是一個(gè)單字節(jié)無符號(hào)整數(shù)數(shù)組,形狀為(一)。這是因?yàn)槌S玫膱D像使用單個(gè)字節(jié)來存儲(chǔ)每個(gè)像素的分量,紅色、綠色、藍(lán)色三個(gè)通道:IMG=PLTIMRED(LENAJPG)IMGSHAPE(L,L,L)IMGDTypedType(#uint#)繪圖函數(shù)Introductionimshow()可用于顯示由IMREAD()返回的數(shù)組。如果陣列是表示多通道圖像的三維陣列,每個(gè)像素的顏色由每個(gè)通道的值決定:請(qǐng)注意,從JPG圖像讀取的數(shù)據(jù)是顛倒的。為了正常顯示圖像,可以反轉(zhuǎn)陣列的第一個(gè)軸,或者將imshow()的origin參數(shù)設(shè)置為更低。因此,顯示的圖表的原點(diǎn)在左下角:pltimshow(img)#注意,圖像是倒置的pltimshow(img::)#反轉(zhuǎn)圖像數(shù)組的第一個(gè)軸#或ltimshow(img,origin=lower)#讓圖表的原點(diǎn)在左下角。繪圖功能的簡要說明如果三維數(shù)組的元素類型是浮點(diǎn)數(shù),則元素的值域是to,對(duì)應(yīng)于顏色值to。超出此范圍的像素可能有顏色異常。下面的示例將數(shù)組img轉(zhuǎn)換為浮點(diǎn)數(shù)組,并使用imshow()顯示它:img=img::pltimshow(img*)#浮點(diǎn)數(shù)字組的值在到的范圍內(nèi),無法正確顯示顏色pltimshow(img)#浮點(diǎn)數(shù)字組的值在到的范圍內(nèi),可以正確顯示顏色pltimshow(img、、、)#使用clip()來限制值范圍整個(gè)圖像增亮繪圖功能簡介如果imshow()的參數(shù)是二維數(shù)組,請(qǐng)使用顏色映射表來下面顯示了圖像中的紅色通道:顯示效果很嚇人,因?yàn)槟J(rèn)的圖像映射將最小值映射為藍(lán)色、而最大值映射為紅色。您可以使用colorbar()在圖表中顯示顏色映射:pltimshow(img:,,)pltcolorbar()繪圖函數(shù)簡介imshow()的cmap參數(shù)可以修改顯示圖像時(shí)使用的顏色映射。顏色映射表是一個(gè)顏色映射對(duì)象。matplotlib中已經(jīng)預(yù)定義了許多顏色映射表。這些顏色映射表的名稱可以通過下面的語句找到:(matplotlibimshowpy)下面的顏色映射表名為copper,用于顯示圖像的紅色通道,它具有舊照片的味道:IMPORTmatplotlibrascmapnameslsquotradarsquao、RSQUOPPERRSQUO、LSQUORDYLN#、LSQUOTERSQUAO、RSQUOSUMNERSQUAO。rsquospringrsquo,rsquogistnkarsquopltimshow(img:,,,Cmap=cmcopper)繪圖功能簡介importnumpyasnmpmportantmapplotlibplotaspltimporttportmapplotlibcmasmpltsupplotadjustment(,,,)PLTupplot()img=pltimread(lenajpg)PLTusow(img)PLTupplot()pltimshow(img::)PLTupplot()pltimshow(img,Origin=lower)img=img::PLTuppltPLTplotplotPLTPLT下面的程序使用圖像直觀地顯示二進(jìn)制函數(shù)(matplotlibdfuncpy使用imshow()來可視化二進(jìn)制函數(shù))importnumpyasynpmportantmatplotlibportmapportmatplotlibcmasmy,x=npgrid::j,:JZ=x*npexp(x**y**)extend=npmin(x),npmax(x),npmin(y),npmax(y)drawingfunction簡介。首先,通過數(shù)組的廣播函數(shù)計(jì)算表示函數(shù)值的二維數(shù)組z。請(qǐng)注意,它的第一個(gè)軸代表y軸、第一個(gè)軸代表x軸。然后將X、Y軸的值范圍保存到范圍列表中。pltfigure(figsize=(,))pltsubplot()pltimshow(z,extent=extent,Origin=lower)PLTcolorbar()PLTsubplot()PLTimshow(z,extent=extent,cmap=cmgray,Origin=lower)PLTcolorbar()PLTshow()繪圖函數(shù)介紹將擴(kuò)展列表傳遞給imshow()的擴(kuò)展參數(shù),以便圖表的X、Y軸的比例標(biāo)簽將使用擴(kuò)展列表繪圖函數(shù)介紹中指定的范圍等值線圖也可以使用等值線圖來表示二進(jìn)制函數(shù)。等值線是指由函數(shù)值相等的點(diǎn)形成的平滑曲線。等值線可以直觀地表示二元函數(shù)值的變化趨勢(shì)。例如,在等值線密集的地方,函數(shù)值變化很大。等高線()和等高線()可用于在matplotlib中繪制等高線。它們之間的區(qū)別在于等高線()獲得具有填充效果的等高線。(matplotlibcontourpy使用contourandcontourf繪制等高線圖)繪圖功能簡介importnumpyasymportantmatplotlibpyplotaspity,x=npogrid::j,:JZ=x*npexp(x**y**)extend=npmin(x),npmax(x),npmin(y),npmax(y)pltfigure(figsize=(,))pltsupplot()cs=PLTcontour(z,,extent=extent)PLTlabel(cs)PLTuppltcontour()PLTcontour這樣獲得的陣列z的形狀是(,),其第一軸對(duì)應(yīng)于y軸、第三軸對(duì)應(yīng)于x軸。調(diào)用contour()繪制數(shù)組z的等值線圖,第二個(gè)參數(shù)為,表示整個(gè)函數(shù)的取值范圍平均分為6個(gè)區(qū)間,即在顯示的等值線圖中有一條等值線。與imshow()一樣,您可以使用范圍參數(shù)來指定等高線圖的x軸和y軸的數(shù)據(jù)范圍。Contour()返回一個(gè)QuadContourSet對(duì)象,并將其傳遞給clabel(),標(biāo)記其中等值線的相應(yīng)值。引入繪制功能調(diào)用等高線(),繪制等值范圍分為0+部分的等高線圖,具有填充效果。這里有另一種方法來設(shè)置X、Y軸的取值范圍。它的前兩個(gè)參數(shù)是在計(jì)算數(shù)組Z時(shí)使用的X軸和Y軸上的采樣點(diǎn),并且這兩個(gè)數(shù)組必須是一維的。繪圖函數(shù)的引入也可用于通過等值線繪制隱式函數(shù)曲線。顯然,不可能像繪制一般函數(shù)一樣,創(chuàng)建一個(gè)等差數(shù)組來表示變量的值點(diǎn),然后計(jì)算數(shù)組中每個(gè)X對(duì)應(yīng)的Y值。等值線可以用來解決這個(gè)問題。顯然,隱函數(shù)的曲線是等值的等值線。當(dāng)f(x,丫)二和f(x,y)=x=NPOgrid::j.::JF=(x**y**)**(x**y**)**繪圖功能簡介pitfigure(figuresize=(,))PLTsubplot()extend=npmin(x),npmax(x),npmin(y),npmax(y)cs=pitcolour(f,extend=extend)時(shí),以下程序繪制曲線(matplotlibimplicitfundcpy)將此處的標(biāo)高參數(shù)設(shè)置為,這樣最終將繪制兩條等值線??匆幌聢D,我們會(huì)發(fā)現(xiàn)代表隱函數(shù)f(x)=藍(lán)色的實(shí)線并不是完全連續(xù)的,它是由圖中間許多孤立的小段組成的。因?yàn)榈戎稻€無限接近原點(diǎn),無論函數(shù)f的值空間如何細(xì)分,總會(huì)有無法分離的地方,導(dǎo)致圖中孤立的小區(qū)域。代表隱函數(shù)f(x,y)二的紅色虛線是閉合的和連續(xù)的。繪圖功能簡介等值線上各點(diǎn)的數(shù)據(jù)可以通過等高線()返回的對(duì)象獲得。變量cs在下面的IPython中觀察到。它是一個(gè)四邊形控制資源對(duì)象:cs對(duì)象的集合屬性是一個(gè)等值線列表。每條等值線都由一個(gè)線集合對(duì)象表示:CSCollectionsSalistofCollLinecCollection對(duì)象SRUnmatplotlibimplicitFuncycSmaTPLOTTLLBCONTOURQUODOCENTOURCETINSTAXE繪圖函數(shù)簡介每個(gè)線集合對(duì)象都有自己的顏色、線型、線寬和其他屬性注意,在這些屬性獲得的結(jié)果之外還有一層封裝。真正的配置是獲取它的第一個(gè)元素:從類名中,可以知道LineCollection對(duì)象是一組曲線,因此它可以表示由多條線組成的等值線,如藍(lán)色實(shí)線。它的getpaths()方法獲取組成等值線的所有路徑。在本例中,藍(lán)色實(shí)線cgetc010r()數(shù)組(,,由cgetlinewidth()繪圖函數(shù)的簡介所表示的等高線由四條路徑組成:路徑是一個(gè)路徑對(duì)象,通過其頂點(diǎn)屬性,可以獲得路徑上所有點(diǎn)的坐標(biāo):LEN(CscCollectionGetPaths())path=CscCollectionGetPaths()類型(PATH)類#MatplotLibPathPathPathVerticeArray(,,,,,下面的程序從等值線集中找到一條表示等值線的路徑,并使用plot()將其繪制出來。plot()forcedcollections:data=setpath()verticespot(data:,,data:,,color=cgetcolor(),LINEALINELINEWIDTH=cgetLINEWIDTH())繪圖功能簡介3D繪圖mpltoolkitsmplotd模塊提供基于matplotlib的3D繪圖功能。由于使用data的2D繪圖功能繪制三維圖形,繪圖速度有限,不適合大規(guī)模數(shù)據(jù)的三維繪制。如果需要更復(fù)雜的3d數(shù)據(jù)可視化功能,可以使用Mayavi。(matplotlibsurfacepy使用matplotlib繪制三維曲面)繪圖功能簡介演示matplotlib的三維繪圖功能。importnumpyasnimportmpltoolkitsmpl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論